Envoyer et recevoir des int C++
Comment envoyer au serveur de 4 octets int
et sur le côté serveur conver ce tampon à l'int.
côté client:
void send_my_id()
{
int my_id = 1233;
char data_to_send[4];
//how to convert my_id to data_send?
send(sock, (const char*)data_to_send, 4, 0);
}
côté serveur:
void receive_id()
{
int client_id;
char buffer[4];
recv(client_sock, buffer, 4, 0);
//how to conver buffer to client_id? it must be 1233;
}
Que diriez-atoi pour la recevoir, et de la ltid pour l'envoyer?
Yup - l'envoi/la réception du texte de fonctionner, trop.
Yup - l'envoi/la réception du texte de fonctionner, trop.
OriginalL'auteur Becker | 2012-05-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez tout simplement jeté l'adresse de votre
int
àchar*
et de le passer àsend
/recv
. Notez l'utilisation dehtonl
etntohl
de traiter avec l'endianness.Remarque: j'ai conservé le manque de résultat de vérification. En réalité, vous aurez besoin de plus de code pour s'assurer qu'à la fois envoyer et recv transfert de tous les octets.
OriginalL'auteur Robᵩ
La convention en vigueur depuis le début de l'internet pour envoyer des binaires des entiers dans Ordre Des Octets De Réseau (lire en big-endian). Vous pouvez utiliser
htonl(3)
et amis à le faire.OriginalL'auteur Nikolai Fetissov
Sur l'envoi de côté:
Sur le côté de réception:
NB: la taille de
int
et endianness doit être la même sur les deux côtés....mieux vaut-il être plus qu'une bonne habitude. À mon humble avis, de ne pas survivre longtemps avec le code ci-dessus dans la nature (pun intended).
OriginalL'auteur qehgt