2012-01-31 5 views
1

アタッチされたイーサネットインターフェイスがネットワークから外れた場合、accept関数はエラー(-1)を返しますか? )は、そのインターフェイスがもうアクティブではないことを知りますか?TCPサーバがネットワーク外に出るとファンクションリターンエラー(-1)を受け取ります

私はイーサネットインターフェイスからIPアドレスを削除すると、accept()関数を直接呼び出すために "select"ステートメントを使用せず、接続を受け入れるために1つのスレッドを使用しています。

Cを使用し、作業環境はlinuxです。

+0

言語を選択...任意の言語... –

+0

TCPには1分以上のタイムアウトがあるため、すぐにはわかりません。それでも、 'select'や' poll'を使うのはいつも賢明です... –

+0

@Basile Starynkevitchこれらのタイマーは、ソケット接続を閉じた後に役立ちます。アプリケーションサーバがそのインターフェースがもうアクティブではないことを知る方法を見つけようとしています。 – pjain

答えて

0

通常、サーバーソケットを特定のIPアドレスにバインドしません(INADDR_ANYを使用します)。したがって、たとえあなたのイーサネットIPアドレスを削除しても、ループバックインターフェイスを使用してサーバに接続することができます。またはIPアドレスを持つ他のインタフェース。

サーバーがネットから到達可能であることを確認したい場合は、インターフェイスの状態を確認してもあまり効果がありません。これは、ネットワークを通る長い経路上の単なるホップです。サーバーの到達可能性をチェックするには、別の場所にテストクライアントが必要です。

関連する問題