检测客户端ctrl-c套接字

时间:2018-04-15 16:11:23

标签: c sockets server signals copy-paste

我正在尝试检测我的套接字的客户端何时使用ctrl-c断开连接,然后忽略它。

我知道信号(SIGINT,SIG_IGN)但是当我把它放在我的服务器端时,它只是在服务器端创建了ignore-ctrl-c,这不是我想要的。

如何将此行为仅应用于客户端,以便在客户端退出后服务器将继续运行? 我不控制客户的代码。

1 个答案:

答案 0 :(得分:2)

无法在客户端上检测到Ctrl-C,因为没有此类信息通过套接字传输 - 除非您的客户端应用程序专门用于传输此类信息。但除非您在客户端专门处理Ctrl-C,否则它将退出,这将导致套接字关闭。可以通过读取套接字来检测这种套接字关闭:它将不返回任何数据,也不会返回错误,作为套接字关闭的标志。你不会以这种方式检测到的是套接字关闭的原因,即你不知道它是否是由显式的Ctrl-C引起的,因为客户端崩溃了,或者客户端刚刚关闭套接字但是它仍在运行