senden int over-Buchse, c, c++
Habe ich Schwierigkeiten mit dem versenden ein array von ints, über einen socket.
der code sieht so aus
Programm 1 (läuft auf windows)
int bmp_info_buff[3];
/* connecting and others */
/* Send informations about bitmap */
send(my_socket, (char*)bmp_info_buff, 3, 0);
Programm 2 (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]);
Sollte es zu drucken
Größe der bitmap: 64
Breite: 8
Höhe: 8
Größe der bitmap: 64
Breite: 6
Höhe: 4096
Was mache ich falsch?
InformationsquelleAutor Lukasz | 2013-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim senden der
bmp_info_buff
array als char-array, die Größe derbmp_info_buff
ist nicht 3, sondern ist3 * sizeof(int)
Das gleiche für
recv
Ersetzen
durch
InformationsquelleAutor MOHAMED
Die Größe argument für
send()
undrecv()
ist in bytes, nichtint
s. Sie senden/empfangen-zu wenig Daten.Benötigen Sie:
und
Beachten Sie auch:
int
ist nicht das gleiche auf allen Plattformen, die Sie brauchen, um Bedenken Sie auch.void *
.recv()
sollte nichtNULL
wie in deinem code, es ist ein flags integer wie insend()
.sizeof
Stichwort oder was?+1 für die byte-endian-Zeug!
Auch eine gute Idee, um die schicken Sachen im Netz bestellen.
Auch, es ist ein Problem, über möglich 32/64bit mismatch hinzufügen.
InformationsquelleAutor unwind