2011-02-11 121 views
0

我是C真正的noob。我试图在C开发自己的锁服务器(只是为了练习)。我有一个问题...让我们想象一下,我们有用C编写的服务器,我们有通过套接字连接到此服务器的远程主机。当连接被启动 - 我的服务器已经在内存中创建了指针。远程主机断开连接时是否可以删除该指针?我如何捕捉断开连接事件?如何捕捉断开事件?

谢谢

+0

取决于您使用的API。尽管通常不存在真正的断开连接事件,只有关机,拒绝接收数据包和超时 – 2011-02-11 20:51:53

回答

0

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

  1. 接收指示另一方打算断开连接的数据包。
  2. 尝试传输在通信之间的“静默”期间由于连接更改而无法传送的软件包。

这意味着系统其中“必须”确保连接通常发送和接收定期“虚拟”的消息来检测连接的丢失早于它会通过“正规”的业务单独检测。

根据您的应用程序,保持活动消息的开销可能不值得。

你在网络一侧的“连接”实际上只是一串数据结构,可以让你发送和接收数据。 “TCP/IP”较低的“IP”层是无连接的,这意味着您不会知道您的模拟“连接”是否可用,直到您尝试使用它(或收到一个包明确告诉您另一端不会处理更多数据)。

0

read(2)系统调用将返回零当插座的另一端关闭连接。