L'envoi et la réception de std::string sur socket

J'ai vu la même question sur la manière, mais non des réponses à ma question.
Ici, je suis en train d'envoyer et recv chaîne:

Je suis l'envoi de std::string :

if( (bytecount=send(hsock, input_string.c_str(), input_string.length(),0))== -1)

Peut-il être correctement reçu par cela?

if ((bytecount = recv(*csock, rcv.c_str(), rcv.length(), 0)) == -1)

J'obtiens l'erreur:

erreur: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive] " sur recv ligne!

J'ai fait un answer qui pourrait vous aider. Il démontre l'envoi de longueur arbitraire de données string par l'envoi de la longueur réelle (il suffit de les ignorer l'protobuf genre de trucs).
merci beaucoup! qu'est-ce que star pkt; que ça va marcher pour std::string? Si vous pouvez écrire le morceau de code que j'ai wouuld reconnaissant. Sinon, je vais essayer moi-même.
star pkt; est une instance d'objet de l'un protobuf classe générée. Il est possible de/sérialisé à partir de/à std::string objets. Ils sont utilisés pour send/recv sur le support, et ce qui doit démontrer vos besoins.
Je n'ai pas eu le temps plus tôt aujourd'hui d'adapter la réponse à votre cas. Jetez un oeil s'il vous plaît.

OriginalL'auteur Catty | 2013-09-07