Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP套接字客户端-检测服务器断开连接_Php_Sockets - Fatal编程技术网

PHP套接字客户端-检测服务器断开连接

PHP套接字客户端-检测服务器断开连接,php,sockets,Php,Sockets,我有一个socket客户端,它连接到服务器并等待服务器发送文本行 我通过以下方式打开连接: $handle = fsockopen(MY_IP_ADDRESS,MY_PORT,$sockErrno,$sockErrStr); stream_set_blocking($handle,1); stream_set_timeout($handle,MY_SOCKET_TIMEOUT); 然后: while (true) { $inString = fgets($handle,256);

我有一个socket客户端,它连接到服务器并等待服务器发送文本行

我通过以下方式打开连接:

$handle = fsockopen(MY_IP_ADDRESS,MY_PORT,$sockErrno,$sockErrStr);
stream_set_blocking($handle,1);
stream_set_timeout($handle,MY_SOCKET_TIMEOUT);
然后:

while (true) {
   $inString = fgets($handle,256);
   do some stuff with the received data... 
}
这一切都很好。收到的消息之间没有特定的间隔。消息可能每秒到达几次,也可能不会持续几分钟

流设置超时设置为60秒。。。如果没有收到任何消息,那么我只需循环并再次对FGET排队

偶尔,由于某种原因,连接会断开

我希望能够检测到断开的连接,以便开始尝试重新连接


有没有办法检测断开的连接?当流超时发生时,我是否可以检查一些东西,这些东西会告诉我不再有连接?

由于您正在执行阻塞读取,一旦系统确定连接实际上已断开,fgets就会“检测”断开的连接,并返回
false
(至少它一般是这样工作的——PHP+sockets!=fun)。谢谢Jon-我添加了代码来检测$inString==FALSE,我希望它能像广告中那样工作