3

私はudpソケットを設定し、呼び出しごとに異なる受信者でsendto()を呼び出しました。

scater/gather io を利用するために writev() を使用したいのですが、writev() では sendto() のように受信者のアドレス/ポートを指定できません。助言がありますか?

4

2 に答える 2

2

を使用して事前にエンドポイントを指定するとwritev、結合されたバッファーのセットを単一のエンドポイントに送信するために使用できます。connectの(OSX)マンページからconnect(2)

データグラムソケットは connect() を複数回使用して関連付けを変更する場合があります

を使用して、各バッファーを異なるエンドポイントに送信することはできません。writev

* nconnect / writevの代わりに使用することの潜在的な欠点は、ごとにさらに別のシステム コールになることです。sendtowritev

受信者のセットが限られている (そして事前にわかっている) 場合は、受信者ごとに別々のソケットを使用し、各ソケットを 1 回socketだけ使用することをお勧めします。connect

于 2013-12-03T15:49:51.920 に答える