2016-05-16 8 views
-1

が、それはiがAPUEを読んだとき

SUSは、接続が失敗した場合、ソケットの状態が定義されていないことを警告していると言う失敗

が、 bind、listen、またはacceptが失敗した場合のソケットの状態に関する具体的な説明はありません。 bind、listen、またはacceptが失敗した場合でもソケットがまだ有効かどうか疑問に思う?

+1

APUE = Unix環境での高度なプログラミング、W. Richard Stevens(疑問に思うかもしれない人向け) –

答えて

4
  • bind()が失敗した場合、それは拘束されません。もう一度bind()に電話するか、connect()に電話をかけることができます。
  • listen()が失敗した場合、リッスンしません。あなたはそれを接続することができます、またはあなたが幸運を感じている場合はlisten()をもう一度お試しください。
  • accept()が失敗しても、まだ聞き取り中です。
  • connect()はすべての例外です。あなたができるのはそれを閉じることだけです。

すべての場合、ソケットは「まだ有効」であることに注意してください。接続が失敗した後は使用できなくなります。それでもあなたはそれを閉じなければなりません。 [の理由は、目的の接続ターゲットへのルートの一部として選択されたローカルインターフェイスに自動的にバインドされている可能性があります。これは、後で別のターゲットへの接続には適切でない可能性があります。 ]

関連する問題