使用单个send()调用发送多个数据报?

时间:2009-03-10 16:20:06

标签: sockets datagram

当基于数据报的套接字(原始套接字或UDP)与聚集样式发送一起使用时,所有数据被连接以形成单个IP数据包。有没有办法使用一次调用发送多个数据报?

3 个答案:

答案 0 :(得分:2)

您正在寻找的电话是sendmmsg()但是它尚未实施,甚至还没有进行多少讨论。您可以在最新的2.6.3 Linux内核中看到它的接收端recvmmsg()

答案 1 :(得分:0)

我不这么认为......您如何期望IP堆栈推断出您想要数据包数据报的位置?

答案 2 :(得分:0)

你问的是有点好笑,因为聚合风格的send()正如名称所示从内存中的多个位置收集数据并将它们放在一个缓冲区中然后发送。

因此,您希望发送多个数据报的数据部分。你为什么不单独发送电话给他们发送?

您实际上可以在数据报套接字上调用connect()来指定默认目标,这样您就可以发送()或write()而不必每次都指定目标地址。