Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.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
C 如何捕捉断开连接事件?_C - Fatal编程技术网

C 如何捕捉断开连接事件?

C 如何捕捉断开连接事件?,c,C,我是C语言中真正的noob。我正在尝试用C语言开发我自己的锁服务器,只是为了练习。我有个问题。。。假设服务器是用C编写的,远程主机通过套接字连接到此服务器。启动连接时-我的服务器已在内存中创建指针。远程主机断开连接时是否可以删除此指针?如何捕捉断开连接事件 谢谢当套接字的另一端关闭连接时,系统调用将返回零。在真实的io场景中,您无法真正检测到断开连接。相反,您必须: 接收指示另一方打算断开连接的数据包。 在通信之间的静默期内,尝试传输由于连接变化而无法交付的数据包。 这意味着必须确保连接性的系统

我是C语言中真正的noob。我正在尝试用C语言开发我自己的锁服务器,只是为了练习。我有个问题。。。假设服务器是用C编写的,远程主机通过套接字连接到此服务器。启动连接时-我的服务器已在内存中创建指针。远程主机断开连接时是否可以删除此指针?如何捕捉断开连接事件


谢谢

当套接字的另一端关闭连接时,系统调用将返回零。

在真实的io场景中,您无法真正检测到断开连接。相反,您必须:

接收指示另一方打算断开连接的数据包。 在通信之间的静默期内,尝试传输由于连接变化而无法交付的数据包。 这意味着必须确保连接性的系统通常会发送和接收周期性的虚拟消息,以比单独的常规通信检测到连接丢失更快地检测到连接丢失

根据您的应用程序,“保持活动”消息的开销可能不值得付出这样的努力


你在网络中的连接实际上只是一堆数据结构,允许你发送和接收。TCP/IP较低的IP层是无连接的,这意味着您将不知道您的模拟连接是否可用,直到您尝试使用它或收到一个包明确告诉您另一端将不再处理任何数据。

取决于您使用的API。虽然通常没有真正的断开连接事件,但只有关机、拒绝接收数据包和超时