qt - 客户端套接字发送但静默服务器套接字不接收

标签 qt sockets tcp serversocket tcpsocket

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

它在几分钟内运行良好。但过了一段时间,服务器套接字停止获取这些数据。我不知道为什么? TCP 中有没有这样的事情,比如如果客户端继续推送数据,服务器必须说些什么,否则对话将停止?

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

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

最佳答案

与 TCP 的“单向”通信完全没问题,除非您需要来自发送方接收方的确认。但那是您的应用程序级协议(protocol)。在传输级别,数据包仍然双向流动 - TCP 在两个方向上都保留序列号并向另一端确认它们。这允许检测丢失/重复的数据包并重新传输,从而提供流的可靠性。在连接握手期间协商并在对话期间更新的窗口大小允许 TCP 减慢快速发送者的速度,从而压倒慢速接收者。

你真正需要做的是用类似 tcpdump(1) 的嗅探器记录 TCP 连接。或 wireshark并找出在“套接字停止获取这些数据”时线路上发生了什么。

关于qt - 客户端套接字发送但静默服务器套接字不接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999157/

相关文章:

c++ - 段错误(代码已转储)

c++ - 奇怪的 QMetaObject 错误

php - 将数据从PHP客户端发送到PHP Web服务器套接字

string - Erlang:将 TCP 发送的字符串转换为正确的形式,例如<<"SomeString">> 到 "SomeString"?

java - 套接字,发送的 pdf 文件始终到达零字节大小

linux - nfs超时

Android后退按钮按下不会触发keys.onreleased qml

c++ - 如何查询本地的QSqlQueryModel?

c# - 系统内存不足异常

c - accept 是否可能返回与 sockfd 相同的值?