在TCP / IP套接字中,服务器如何知道客户端正忙而不接收数据?

时间:2011-10-26 19:16:32

标签: sockets unix networking tcp ip

在TCP / IP套接字中,服务器如何知道客户端正忙而没有接收数据?

我的解决方案:

使用connect(),

我不确定。

感谢

2 个答案:

答案 0 :(得分:2)

  

在TCP / IP套接字中,服务器如何知道客户端正忙   没有收到数据

如果TCP不断推送对等方未确认的数据,最终发送窗口将填满。此时,TCP将缓冲数据以“稍后发送”。最终将达到缓冲区大小, send(2)将挂起(通常不会这样做)。

如果send(2)开始挂起,则表示对等TCP未确认数据

显然,即使对等TCP接受数据,也不意味着对等应用程序实际使用它。您可以在ACK之上实现自己的TCP机制,并不像听起来那样不合理。这将涉及让客户偶尔发送“发送更多信息”。

答案 1 :(得分:1)

客户端几乎总是会收到您的数据,我的意思是操作系统会接受数据包并将它们排队等待读取。如果该队列填满,则发件人将阻止(TCP,无论如何)。您实际上无法知道客户端代码的活动。几乎你唯一的选择是使用超时。