连续写入TCP套接字而不读取

连续写入TCP套接字而不读取,tcp,Tcp,我在boost 1.53上编写了一个TCP客户机-服务器应用程序。根据client命令,我必须启动一个服务器线程来向套接字写入一些数据。但是我不能保证客户端应用程序会从这个套接字开始读取。 在不读取数据的情况下将数据写入套接字是否有问题?不会有任何套接字溢出或数据损坏吗 期待听到你的想法 Thx, Dmitry使用TCP,这不会是问题。服务器将检测到客户端没有读取数据,并推迟发送更多数据,直到客户端确认收到已发送的数据。在这种情况下,服务器线程将阻塞,直到客户机准备接受更多数据 此外,TCP数据

我在boost 1.53上编写了一个TCP客户机-服务器应用程序。根据client命令,我必须启动一个服务器线程来向套接字写入一些数据。但是我不能保证客户端应用程序会从这个套接字开始读取。 在不读取数据的情况下将数据写入套接字是否有问题?不会有任何套接字溢出或数据损坏吗

期待听到你的想法

Thx,
Dmitry使用TCP,这不会是问题。服务器将检测到客户端没有读取数据,并推迟发送更多数据,直到客户端确认收到已发送的数据。在这种情况下,服务器线程将阻塞,直到客户机准备接受更多数据


此外,TCP数据包是校验和的,因此,如果在传输过程中有任何数据包损坏,客户端将拒绝这些数据包,服务器将重新发送它们。

将数据发送到慢速或不合作的远程端时会发生什么情况,请参阅


假设您尝试发送数据,而远程端的应用程序拒绝读取数据。最终,远程端的接收窗口变满,它将通过发送窗口大小为0的ACK来指示这一点。您的网络堆栈将停止尝试发送新数据包,直到收到具有较大窗口大小的ACK。如果您一直尝试发送数据,它会累积在网络堆栈的发送缓冲区中。当缓冲区完全写入套接字块时。

要么显示相关代码,要么删除语言/库标记。或者阅读滑动窗口算法:非常感谢您的反馈。请您在下面的评论中提供更多细节:“服务器将检测到客户端没有读取,并在客户端确认收到已发送的数据之前暂停发送更多数据。”这里的检测机制是什么?我应该处理它还是由TCP/IP堆栈自动完成?检测机制是@MarcinLos链接到上面的滑动窗口协议。它是由TCP/IP协议栈自动为您完成的,因此您不需要自己实现它。我刚刚阅读了这篇文章,非常感谢您的帮助。最良好的祝愿:)