Почему функция php socket_read возвращает "$ p86i9" 45C @ "? - PullRequest
1 голос
/ 01 ноября 2019

У меня проблема с функцией 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);

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