1

この質問に答えても、見つからなかった場合はご容赦ください。

私はちょっと混乱していますrecv()recvfrom()。サーバーがアドレスをバインドすると(またはTCPの接続を受け入れると)、recv()が呼び出されます。recv()送信されたメッセージを常にチェックしますか、それともメッセージが受信されるまで待機しますか?待機する場合、待機時間はどのくらいですか?

私が理にかなっているかどうかはわかりませんが、誰かが私を教えてくれるなら、私は感謝するでしょう。

4

2 に答える 2

5

ソケットで使用可能なメッセージがO_NONBLOCKなく、ソケットのファイル記述子に設定されていない場合、recv()はメッセージが到着するまでブロックします。

ソケットで使用可能なメッセージがなくO_NONBLOCK、ソケットのファイル記述子に設定されている場合、recv()は失敗し、errnoを[ EAGAIN]または[ EWOULDBLOCK]に設定します。

出典:http ://www.opengroup.org/onlinepubs/009695399/functions/recv.html

于 2010-03-02T11:20:27.303 に答える
0

select()またはpoll()を使用してタイムアウトを実装できることに注意してください。これにより、一度に複数のソケットで待機することもできます。

于 2010-03-02T16:55:12.237 に答える