Программирование сокетов Php — ACK-сервер с 4-байтовым целочисленным форматом

Я работаю над проектом GPS-трекера и создал сервер сокетов, используя этот класс

Как прослушать TCP-порт с помощью PHP?

Работает нормально до 2-го шага подтверждения количества данных, полученных с устройства.

Это именно то, что требуется в документе интеграции.

Затем модуль начинает отправлять первый пакет данных AVL. После сервера
получает пакет и анализирует его, сервер должен сообщить номер модуля
данные получены как целое число (четыре байта).

Если отправленный номер данных и сообщенный сервером не соответствует модулю
повторно отправляет отправленные данные.

Сервер подтверждает получение данных (3 элемента данных): 00000003 (3)
Сервер ACK для пакета данных AVL

Я могу полностью проанализировать данные, но не могу понять, как отправить целое число в 4-байтовом формате, но, вероятно, не получаю правильный путь.

я пытался php pack () с этими форматами I *, L *, L *

$output =pack('l*', $reply);
SocketServer::socket_write_smart($client->socket,$output); // Send the Client back the String
SocketServer::socket_write_smart($client->socket,"String? ",""); // Request Another String

$ reply содержит номер данных, отправленных в виде пакета. Я попытался отправить 3 как целое число или слева с добавлением 3, чтобы он стал 0000003 (4 символа — 4 байта)

Но ни один из форматов не был успешным, поскольку устройство не отправляет мне следующий набор данных.
Это обязательно, что я отправляю количество данных, полученных как ACK, чтобы отправить обратно, чтобы получить следующий набор, если данные с устройства.

Может ли кто-нибудь помочь мне с правильным способом, чтобы я отправил целое число таким образом, чтобы он был отправлен в формате 4 байта.

0

Решение

Вопрос был решен по аналогичному вопросу

PHP конвертирует целое число в 32-битный (4 байта) гекс для программирования сокетов

Наряду с этим

$output =pack('N*', $reply);

решил проблему.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]