У меня проблема с функцией socket_read()
в моем проекте php. У меня есть устройство gps, которое отправляет мне данные о местоположении на мой сервер, расположенный на виртуальной машине Azure с веб-сервером Apache2.
Проблема заключается в том, что эта функция должна возвращать строку после создания, связывания, прослушивания и принятия сокета, но она возвращаетто, что я не могу прочитать. Он возвращает данные, подобные $p86i9"45C @
, но это должно быть так:
* HQ, 9170383669, V1, 185625, V, 2234,9299, N, 11354,3998, E, 000,00,000,011119, FFFFBBFF, 220,05,00064,1261 #
Вот мой код:
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$address = '10.0.0.4';
$port = 5050;
echo "Starting ... \n";
$sock = socket_create(AF_INET6, SOCK_STREAM, SOL_TCP) or die("Blabla".socket_strerror(socket_last_error())."\n");
socket_bind($sock, $address, $port) or die("Blabla".socket_strerror(socket_last_error($sock))."\n");
socket_listen($sock, 5) or die("Blabla".socket_strerror(socket_last_error($sock))."\n");
do {
$msgsock = socket_accept($sock) or die("Blabla".socket_strerror(socket_last_error($sock))."\n");
$buf = socket_read($msgsock, 2048, PHP_BINARY_READ) or die("blabla ".socket_strerror(socket_last_error($msgsock))."\n");
echo "$buf\n";
} while (true);
socket_close($sock);
?>