我有一个c ++客户端,在一定的时间间隔后向Java服务器应用程序发送一个大字符串(最小大小为10 KB)。在那个时间间隔内,c ++应用程序会累积大量数据并将其完全发送到服务器。服务器也会一次性接收它。
我希望始终保持字符串变量的大小小于string :: max_size。一旦字符串的大小接近限制,我就会将该字符串发送到服务器并清除字符串,然后继续收集剩余的数据。
如果字符串可以保存完整的数据,那么整个数据是否会从客户端传输到服务器。(假设没有连接重置或任何其他此类问题。)
有人可以告诉我,如果这是继续进行的方式吗?
答案 0 :(得分:1)
客户端不知道字符串有多大,也不知道何时停止收听并开始处理收到的字符串。
您需要将字符串的大小作为int发送,然后发送数据。 当服务器收到所有数据后,它将知道该字符串已被正确接收。
答案 1 :(得分:0)
是的,但我建议您在获取数据时发送数据,而不是增加延迟并浪费空间缓冲它。 TCP会处理它。