我在C中编写了一个TCP客户端和服务器。这些软件只在同一台计算机上运行。
1)我的TCP客户端向服务器发送命令(localhost)。
2)服务器努力工作并做出回应。
问题是如果TCP客户端关闭连接,我无法检测到客户端连接已关闭,而服务器将完成其长时间的工作。我只能通过SEND功能检测到这一点,但为时已晚,因为服务器已经工作了。
据我所知,如果机器是远程的,必须非常难以进行此检测。在我的情况下,它是同一台机器,这应该使任务更容易,但我还没有找到解决方案...可以使用选择功能?
谢谢你。
答案 0 :(得分:1)
您可以使用select
这样做:
select
。因此select
在套接字可读时取消阻止select
将取消阻止,recv
将读取0个字节。如果是这样,您可以停止工作线程