多个send()方法调用和1个接收方法。这是正常的吗?

时间:2012-01-23 00:39:33

标签: sockets network-programming

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

2 个答案:

答案 0 :(得分:4)

是。 TCP是一个流,没有单个“数据包”的概念 - 你应该期望一次接收一个字节,所有内容合并在一起或者介于两者之间。

唯一的保证是不会丢失任何数据,并且它会以您发送的顺序到达。

答案 1 :(得分:-1)

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