PHP套接字客户端-检测服务器断开连接
我有一个socket客户端,它连接到服务器并等待服务器发送文本行 我通过以下方式打开连接: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);
$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,我希望它能像广告中那样工作