可以通过 TCP 套接字发送的最大字符大小

Maximum size of characters that can be sent through TCP socket

我有一个 C++ 客户端,它会在一定时间间隔后向 Java 服务器应用程序发送一个大字符串(最小大小为 10 KB)。在那段时间里,c++ 应用程序积累了大量的数据并将其完整地发送到 server.The 服务器也一次性接收到它。

我想始终保持字符串变量的大小小于 string::max_size。一旦字符串的大小接近限制,我就会将该字符串发送到服务器并清除该字符串,然后才继续收集剩余数据。

如果字符串可以容纳完整的数据,整个数据是否会从客户端传输到服务器而不会失败。(假设没有连接重置或任何其他此类问题出现。)

有人可以告诉我这是否是继续进行的方式?

客户端不知道字符串有多大,也不知道何时停止监听并开始处理接收到的字符串。

您需要将字符串的大小作为一个整数发送,然后将数据发送过来。 当服务器接收到所有数据后,就知道字符串接收正确了。

是的,但我建议您在获取数据时发送数据,而不是增加延迟并浪费 space 缓冲所有数据。 TCP 会处理它。