私はudpソケットを設定し、呼び出しごとに異なる受信者でsendto()を呼び出しました。
scater/gather io を利用するために writev() を使用したいのですが、writev() では sendto() のように受信者のアドレス/ポートを指定できません。助言がありますか?
私はudpソケットを設定し、呼び出しごとに異なる受信者でsendto()を呼び出しました。
scater/gather io を利用するために writev() を使用したいのですが、writev() では sendto() のように受信者のアドレス/ポートを指定できません。助言がありますか?
を使用して事前にエンドポイントを指定するとwritev
、結合されたバッファーのセットを単一のエンドポイントに送信するために使用できます。connect
の(OSX)マンページからconnect(2)
:
データグラムソケットは connect() を複数回使用して関連付けを変更する場合があります
を使用して、各バッファーを異なるエンドポイントに送信することはできません。writev
* nconnect / writev
の代わりに使用することの潜在的な欠点は、ごとにさらに別のシステム コールになることです。sendto
writev
受信者のセットが限られている (そして事前にわかっている) 場合は、受信者ごとに別々のソケットを使用し、各ソケットを 1 回socket
だけ使用することをお勧めします。connect