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

0

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

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

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

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

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

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

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

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

Я пробовал php pack() с этими форматами я *, 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 как целое число или оставить padded 3, чтобы он стал 0000003 (4 символа - 4 байта)

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

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

Теги:
sockets
tcp
byte
gps

1 ответ

0
Лучший ответ

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

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

Наряду с этим

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню