この質問に答えても、見つからなかった場合はご容赦ください。
私はちょっと混乱していますrecv()
とrecvfrom()
。サーバーがアドレスをバインドすると(またはTCPの接続を受け入れると)、recv()
が呼び出されます。recv()
送信されたメッセージを常にチェックしますか、それともメッセージが受信されるまで待機しますか?待機する場合、待機時間はどのくらいですか?
私が理にかなっているかどうかはわかりませんが、誰かが私を教えてくれるなら、私は感謝するでしょう。
ソケットで使用可能なメッセージが
O_NONBLOCK
なく、ソケットのファイル記述子に設定されていない場合、recv
()はメッセージが到着するまでブロックします。ソケットで使用可能なメッセージがなく
O_NONBLOCK
、ソケットのファイル記述子に設定されている場合、recv
()は失敗し、errnoを[EAGAIN
]または[EWOULDBLOCK
]に設定します。
出典:http ://www.opengroup.org/onlinepubs/009695399/functions/recv.html
select()またはpoll()を使用してタイムアウトを実装できることに注意してください。これにより、一度に複数のソケットで待機することもできます。