2013-07-16 3 views
1

Я не могу отправить действительный запрос на сервер. У меня есть это описание протокола, но я не понимаю, что мне нужно отправить с помощью socat на сервер.Какие параметры мне нужно отправить на сервер?

заголовок всегда должны быть переданы в полном объеме, даже если команда не требует каких-либо параметров.

Команда Это одна буква, чей случай важен (команды «A» и «а» очень разные, на самом деле, к примеру). Он имеет размер 8 бит.

param 1 Это 16-разрядный цифровой параметр. Он находится в сетевом порядке байтов, а используется в основном для указания адресов устройств KNX или длины данных.

Моя проблема исходит от param. Я должен отправить 16-разрядный числовой параметр с нулевым значением. Как я могу это сделать?

ответ

3

Обычно «нулевое значение» означает, что вы отправляете ноль.

Если сокет сервер sock, то это будет отправить 16 бит:

send (sock, "\0\0", 2, 0); 
+0

На самом деле, потому что строковый литерал всегда имеет нулевой символ, присоединенный к нему, 'отправить (носок,«\ 0», 2 , 0) 'было бы достаточно. Но не лучше ли было бы построить все сообщение (заголовок, команду и параметр) в один буфер, а затем «отправить()» все сразу? –

+0

@ ElchononEdelson: да, это было бы лучше, но OP не уточнил, что туда положить, и в любом случае я хотел сохранить его простым. – ams