首页 > 解决方案 > 为什么 php socket_read 函数返回“$p86i9”45C @”?

问题描述

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

问题是这个函数应该在创建、绑定、监听和套接字接受之后返回字符串,但它返回的东西我看不懂。它返回这样的数据,$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);

?>

标签: phpsocketsserverapache2

解决方案


推荐阅读