多个send()方法调用和一个receive方法.这正常吗



如果在客户端,我连接到服务器并多次调用套接字上的Send()方法发送短数据,那么服务器有时只接收一个"数据包",其中包含所有累积数据,这是许多发送方法的总和,这是正常的吗?

是。TCP是一个流,没有单独的"数据包"的概念——你应该期望一次接收一个字节的所有内容,所有内容合并在一起或两者之间的任何内容。

唯一的保证是不会丢失任何数据,并且数据将按照您发送的相同顺序到达。

是的,对于基于TCP流的套接字来说,这是完全正常的。默认情况下,启用了用于发送合并的Nagle算法,这减少了在短时间内传输的数据包数量。如果您希望每个send()传输自己的数据包,则必须禁用该算法。有时这在特殊情况下是需要的,但通常默认行为对于大多数套接字使用来说是足够和可取的。

最新更新