我的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);
?>