1

我有一个连接到服务器并等待从服务器发送文本行的套接字客户端。

我打开连接:

$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... 
}

这一切都很好。收到的消息之间没有特定的间隔。消息可能每秒到达数个或几分钟内不到达。

stream_set_timeout 设置为 60 秒......如果没有收到任何消息,那么我只是循环并再次将 fgets 排队。

有时,由于某种原因,连接会中断。

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

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

4

0 回答 0