Я пишу программу, которая использует программирование сокетов в c.Отправка структуры через сокет в c
В этой программе клиент и сервер сохраняют передачу и прием данных.
Когда я отправлять и получать целые числа через сокет, используя этот вид кода
//in the program sending data
int data;
len= send(s,(char *)&(data),sizeof(data),0);
//in the program receiving data
int num;
len = recv(s,&num, sizeof(num) , 0);
Приведенный выше код работает отлично, и я могу передавать и получать номера.
В одном случае я пытаюсь отправить структуру формы
struct sample{
int num;
char chain[10*hops+10];
};
//in the program sending data
struct sample s1;
len= send(s,(char *)&(s1),sizeof(s1),0);
//in the program receiving data
struct sample s2;
len = recv(s,&s2, sizeof(s2) , 0);
В примере, где я пытаюсь отправить и получить структуру он не работает. Как отправить и получить структуру успешно?
Примечание: 1) Хмель представляет собой предварительно определенную переменную. Значение переходов одинаково в обеих программах. 2) Не работая, я имел в виду: когда я получаю структуру и печатаю значение в num. Он печатает не то же значение, а ноль!
'не working' .. просьба уточнить. что такое «хмель»? –
Можете ли вы показать свой полный код ..? –
Есть несколько проблем, которые могут возникнуть в результате отправки структур непосредственно так: Прежде всего, это проблема с заполнением, если вы компилируете отправителя и получателя с использованием разных компиляторов, они могут добавлять в структуру разные дополнения. Печать, например. 'sizeof (struct sample)' в обеих программах. Затем возникает вопрос о порядке байтов, обе системы, которые вы отправляете между ними, имеют ту же [endianness] (https://en.wikipedia.org/wiki/Endianness)? И, наконец, «хмель» одинаковый как у отправителя, так и у получателя? –