envoyer int plus de prise, c, c++
J'ai des problèmes avec l'envoi d'un tableau d'entiers sur une socket.
le code ressemble à ceci
Programme 1 (en cours d'exécution sur windows)
int bmp_info_buff[3];
/* connecting and others */
/* Send informations about bitmap */
send(my_socket, (char*)bmp_info_buff, 3, 0);
Programme 2 (en cours d'exécution sur neutrino)
/*buff to store bitmap information size, with, length */
int bmp_info_buff[3];
/* stuff */
/* Read informations about bitmap */
recv(my_connection, bmp_info_buff, 3, NULL);
printf("Size of bitmap: %d\nwidth: %d\nheight: %d\n", bmp_info_buff[0], bmp_info_buff[1], bmp_info_buff[2]);
Elle doit imprimer
La taille du bitmap: 64
largeur: 8
hauteur: 8
Taille du bitmap: 64
largeur: 6
hauteur: 4096
Que dois-je faire de mal?
OriginalL'auteur Lukasz | 2013-01-04
Vous devez vous connecter pour publier un commentaire.
Lorsque vous envoyez le
bmp_info_buff
tableau de char tableau, la taille debmp_info_buff
n'est pas 3 mais est3 * sizeof(int)
La même pour
recv
Remplacer
par
OriginalL'auteur MOHAMED
La taille de l'argument de
send()
etrecv()
est exprimée en octets, pasint
s. Vous êtes l'envoi/la réception de trop peu de données.Vous avez besoin:
et
Également note:
int
n'est pas la même sur toutes les plates-formes, vous devez tenir compte de cela aussi.void *
.recv()
ne devrait pas êtreNULL
que dans votre code, c'est une des drapeaux entier comme danssend()
.sizeof
mot-clé ou quoi?+1 pour le byte-boutisme des trucs!
Aussi une bonne idée d'envoyer des trucs dans le réseau de commande.
Aussi, il ya une question à propos d'une possible 32/64bit incompatibilité à ajouter.
OriginalL'auteur unwind