Как отправить целое число через сокет? - PullRequest
3 голосов
/ 02 мая 2011

Я пытаюсь отправить целое число через сокет.Я использую этот код для этого;однако мой код на C не будет компилироваться.Компилятор жалуется, что myInt не был объявлен.

int tmp = htonl(myInt);
write(socket, &tmp, sizeof(tmp));

Как мне объявить myInt?Спасибо.

Ответы [ 4 ]

5 голосов
/ 02 мая 2011

Вы уверены, что это было правильно объявлено в вашей программе?

Попробуй так:

int myInt = something;    
int tmp = htonl((uint32_t)myInt);
write(socket, &tmp, sizeof(tmp));
1 голос
/ 02 мая 2011

Возможно, вам придется потратить некоторое время на изучение базового языка C, прежде чем заняться библиотекой сокетов.

Вам необходимо объявить myInt как переменную типа integer следующим образом:

  int myInt;

Это знакомит компилятор с идентификатором myInt, тип которого int. Затем компилятор может принять решение относительно того, что вы делаете с myInt, на основании его типа.

Почти всегда хорошей идеей является присвоение переменной начального значения:

  int myInt = 0;
0 голосов
/ 13 ноября 2012

Конвертируйте все в char, вам не нужно беспокоиться о порядке байтов, потому что char - это байт, вместо этого читайте его байт за байтом.

0 голосов
/ 02 мая 2011

Одно простое решение - ввести целое число для char и отправить 4 байта буфера char

int myInt char * ptr = & myInt;write (socket, ptr, sizeof (int));

в конце получения прочитайте 4 байта .. у вас не возникнет проблем с порядком байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...