无法从套接字读取数据,无法绑定到php

时间:2018-09-27 07:22:20

标签: php sockets serial-port

我有一个通过串行端口连接到客户端PC的秤。客户端PC已安装SERPROXY。使用telnet xx.xx.xx.xx端口25003,可以成功显示数据。这意味着SERPROXY正常工作,并且端口转发也已在路由器中正确完成。我将根据要求共享真实的公共IP,以便使用telnet查看数据。

我该如何在网页上阅读和回显它?

以下代码在使用套接字绑定时失败?

 error_reporting(E_ALL);

// Server IP address
$address = "xx.xx.xx.xx";         // here goes the real public ip address 
// Port to listen
$port = 25003;

$mysock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

socket_bind($mysock,$address, $port) or die('Could not bind to address'); 
socket_listen($mysock, 5);
$client = socket_accept($mysock);

// read 1024 bytes from client
$input = socket_read($client, 1024);

echo $input ;

socket_close($client);
socket_close($mysock);

这是我第一次尝试使用套接字。它是否必须是强制双向通信,例如,server.php和client.php?否则,套接字将无法正常工作。

还有其他方法可以读取php网页中所述IP地址和端口的输出吗?

花了几个小时,但没有运气。帮助将不胜感激。

注意:服务器托管在bluehost上。启用并验证了socket_extensions。

编辑:还通过bluehost确认端口25003从其侧面打开。

编辑:也尝试过以下方法,但无济于事。

$fp = fsockopen("tcp://xx.xx.xx.xx", 25003, $errno, $errstr);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    while (!feof($fp)) {
        $weight = trim(fgets($fp, 64)," ");
    }
}
echo $weight;
 fclose($fp);

我哪里可能出问题了?我完全走错了路吗?

0 个答案:

没有答案