我已经设置了一个udp套接字,并在每次调用时使用不同的收件人调用sendto()。
我想使用writev()来使scater/gather io受益,但是writev()不允许我像sendto()一样指定接收方地址/端口。有什么建议么?
最佳答案
如果事先使用writev
指定端点,则可以使用connect
将合并的缓冲区集合发送到单个端点。从(OSX)的connect(2)
联机帮助页:
您不能使用writev
将每个缓冲区发送到不同的端点。
使用connect / writev
而不是sendto
* n的潜在缺点是,这是每个writev
的另一个系统调用。
如果接收者的集合是有限的(并且事先知道),则最好为每个接收者使用单独的socket
,而对每个套接字仅使用connect
。