为什么php socket_read函数返回“ $ p86i9” 45C @”?

时间:2019-11-01 19:59:02

标签: php sockets server apache2

我的php项目中的socket_read()函数有问题。 我有gps设备,它将位置数据发送到托管在具有Apache2 Web服务器的Azure VM上的服务器。

问题是此函数在创建,绑定,侦听和套接字接受后应返回字符串,但它返回我无法读取的内容。它返回像$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);

?>

0 个答案:

没有答案