Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Linux 如何知道套接字客户端已断开连接?_Linux_Sockets_Embedded - Fatal编程技术网

Linux 如何知道套接字客户端已断开连接?

Linux 如何知道套接字客户端已断开连接?,linux,sockets,embedded,Linux,Sockets,Embedded,我正在用linux架构编写代码。 我对套接字服务器和客户端有疑问。 我制作了一个示例代码,其中服务器继续接受连接,客户端连接到服务器。 如果有人以某种方式拔下了网络电缆,因此我正在断开客户端(客户端插座已断开与PC的连接),而服务器端连接仍然处于活动状态,因为我无法通知客户端已断开连接,因为网络已拔出 我怎么知道客户断开了连接 谢谢, Neel为本地套接字设置SIGPIPE,为每种套接字类型设置eof on read。您需要在套接字上配置keepalive或发送应用程序级心跳消息,否则侦听端将无

我正在用linux架构编写代码。 我对套接字服务器和客户端有疑问。 我制作了一个示例代码,其中服务器继续接受连接,客户端连接到服务器。 如果有人以某种方式拔下了网络电缆,因此我正在断开客户端(客户端插座已断开与PC的连接),而服务器端连接仍然处于活动状态,因为我无法通知客户端已断开连接,因为网络已拔出

我怎么知道客户断开了连接

谢谢,
Neel

为本地套接字设置SIGPIPE,为每种套接字类型设置eof on read。

您需要在套接字上配置keepalive或发送应用程序级心跳消息,否则侦听端将无限期地等待数据包到达。如果控制协议,应用程序级心跳可能会更容易。另一方面,这两种解决方案都有助于保持网络中NAT网关之间的连接

看看这个答案:


另请参阅此Linux文档:

当一个线程在读取时阻塞时,我在读取时出错,但并非总是在读取时出错。找出插座断开的准确方法是什么?