Вы можете отправить целое число как четыре байта, конечно (или сколько бы байтов ни было ваше целое); но вы должны быть осторожны. См. Функцию htonl()
, представленную в вашей системе, вероятно, в <arpa/inet.h>
.
Предполагая четыре-байтовое целое число п, это может сделать то, что вы хотите:
uint32_t un = htonl(n);
send(sockfd, &un, sizeof(uint32_t), flags);
Тогда вы можете написать дополнение на приемном конце.
Причина, по которой звонок htonl()
заключается в том, что старший байт обычно передается сначала через Интернет, тогда как некоторые архитектуры компьютеров, такие как вездесущие x86, сначала хранят младший байт. Если вы не исправите порядок байтов, а машина на одном конце - x86, а машина на другом конце - это что-то другое, то без htonl()
целое число будет искажено.
Я не эксперт по этой теме, кстати, но в отсутствие experter ответов этот ответ может служить. Удачи.
'send()' и 'recv()' обрабатывать байты. То, как вы интерпретируете эти байты, зависит от вас. –
Что такое langauge? Поделитесь своим фрагментом кода здесь, чтобы получить более точные ответы. – Usman
@ Усман: обычно просить фрагмент кода - хорошая идея, но обратите внимание на тег [tag: c]. Большинство вопросов помечены таким образом. – sarnold