我有一个服务器应用程序和一个客户端应用程序(localhost,loopback),它们通过套接字相互交换数据。
当我关闭服务器(控制台)应用程序(通过< Ctrl C
>)时,我希望在客户端应用程序中进行的send()
或recv()
调用返回时出错。
我在Linux上发现了这种行为,但是在Windows上执行相同的步骤之后,应用程序无限期挂起send()
。
这是什么原因?
如何确保应用程序能够以干净的方式检测到远程连接已关闭?
更多诊断信息:
当服务器和客户端都在运行时,我执行netstat -a -o -n -b
我能够在 ESTABLISHED 状态下观察客户端和服务器套接字。
但是,当我运行netstat -a -o -n -b
时终止服务器程序后
我甚至无法在网络连接列表中看到客户端程序套接字。