Tag: 客户端服务器

如何使用recv()检测客户端是否仍然连接(而不是挂起)?

我在SuSE Linux Enterprise Server 12.3(x86_64)上用C编写了一个多客户端服务器程序,我每个客户端使用一个线程来接收数据。 我的问题是: 我使用一个终端来运行服务器,并使用其他几个终端telnet到我的服务器(作为客户端)。 我已经在服务器中使用recv()来从客户端接收数据,我还应用了recv()返回值的检查,即错误在-1 ; Conn。在0和正常操作时关闭。 我没有在recv()使用任何标志。 如果我通常使用Ctrl+]关闭telnet会话(即断开客户端)并close ,我的程序工作正常,但如果我使用kill 强制终止客户端,那么我的服务器无法检测到连接丢失。 如何解决? 约束:我不想在客户端放置条件,我只想在服务器端解决此问题。