我在 Raspberry Pi3 上运行的 C++ 客户端和在 Centos7 上使用 Php7 的 ReactPHP 服务器之间的 socket 连接存在故障。请参考以下内容:
- 客户端使用 TLS over TCP 在端口 1337 上创建了一个套接字连接到服务器。
- 客户端可以向服务器写入数据。
- 服务器可以向客户端写入数据。
- 两台机器上都运行着 Tshark,过滤器仅针对端口 1337,并且看到了这种初始通信。
- 接下来一个小时没有任何通信,两台机器上的 Tshark 确认没有通信发生。
- 客户端或服务器都没有收到关闭连接的消息,并且认为连接仍然处于打开状态。
- 然后服务器尝试向客户端写入更多数据,Tshark 在服务器上看到了传输,但是 Tshark 没有在客户端上看到传输,客户端也不会响应。
- 如果然后关闭客户端守护进程,服务器会感知到连接已关闭。
- 如果相反地关闭服务器守护进程而不是客户端守护进程,则客户端不会感知连接已关闭。
php.ini 显示 default_socket_timeout 为 60 秒,更改该值似乎没有任何影响。
这是什么原因,并且如何预防它?
谢谢