1

我有一个客户端套接字,它在连接握手完成后将图像数据推送到服务器套接字。并且服务器套接字处理它们而不响应任何东西

几分钟后效果很好。但是一段时间后,服务器套接字停止获取这些数据。我不知道为什么?TCP中有没有这样的事情,比如如果客户端不断推送数据,服务器必须说些什么,否则对话就会停止?

我几年前写了这段代码。为了让它工作,我让服务器返回一个字符串“ACK”响应。但是,如果我将其更改为任何字符串,它将起作用。

但现在我想弄清楚为什么要重建程序。

4

1 回答 1

0

除非您需要发送方的接收方确认,否则与 TCP 的“单向”通信完全可以。但那是您的应用程序级协议。在传输级别,数据包仍然双向流动——TCP 在两个方向上保持序列号并向另一端确认它们。这允许检测丢弃/重复的数据包并重新传输,从而提供流的可靠性。在连接握手期间协商并在对话期间更新的窗口大小允许 TCP 减慢快速发送方的速度,而这会使慢速接收方不堪重负。

您真正需要做的是使用嗅探器(如wireshark)记录TCP连接,tcpdump(1)找出“套接字停止获取这些数据”时线路上发生的情况。

于 2012-06-12T15:55:59.813 回答