【发布时间】:2009-03-10 16:20:06
【问题描述】:
当基于数据报的套接字(原始套接字或 UDP)与聚集式发送一起使用时,所有数据都连接起来形成一个 IP 数据包。有没有办法通过一次调用发送多个数据报?
【问题讨论】:
当基于数据报的套接字(原始套接字或 UDP)与聚集式发送一起使用时,所有数据都连接起来形成一个 IP 数据包。有没有办法通过一次调用发送多个数据报?
【问题讨论】:
您正在寻找的电话是sendmmsg(),但它尚未实施,甚至还没有进行很多讨论。您可以在最新的 2.6.3 Linux 内核中看到它的接收端孪生recvmmsg()。
【讨论】:
我不这么认为...您希望 IP 堆栈如何推断您希望数据包数据报在哪里?
【讨论】:
您的问题有点有趣,因为顾名思义,gather 风格的 send() 从内存中的多个位置收集数据并将其放在一个缓冲区中,然后发送。
因此,您有多个数据部分要发送多个数据报。为什么不通过单独的调用来发送它们?
你实际上可以在数据报套接字上调用 connect() 来指定一个默认目标,这样你就可以发送() 或 write() 而无需每次都指定目标地址。
【讨论】: