Send int over socket in C/C++

Lukasz picture Lukasz · Jan 4, 2013 · Viewed 17.6k times · Source

I have troubles with sending an array of ints over a socket. the code looks like this

Program 1: (running on windows)

int bmp_info_buff[3];

/* connecting and others */

/* Send informations about bitmap */
send(my_socket, (char*)bmp_info_buff, 3, 0);

Program 2: (running on 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]);

It should print Size of bitmap: 64
width: 8
height: 8

Size of bitmap: 64
width: 6
height: 4096
What do I do wrong?

Answer

MOHAMED picture MOHAMED · Jan 4, 2013

When you send the bmp_info_buff array as char array, the size of bmp_info_buff is not 3 but is 3 * sizeof(int)

The same for recv

Replace

send(my_socket, (char*)bmp_info_buff, 3, 0);
recv(my_connection, bmp_info_buff, 3, NULL);

by

send(my_socket, (char*)bmp_info_buff, 3*sizeof(int), 0);
recv(my_connection, bmp_info_buff, 3*sizeof(int), NULL);