2012-10-03 10 views
19

インターネットで何時間も検索しても、私の問題の答えはまだ見つかりませんでした。ソケットを複数のインターフェイスにバインドする方法

私の仕事は、可変数のインターフェイス(設定ファイルにeth0, eth1, etc.として与えられている)からソケットを受け入れるサーバーを作成することです。

これを行う最も簡単な方法は何ですか? 1つのソケットを複数のインターフェイスにバインドする方法はありますか?私はまだそれを行う方法を見つけていない。
または、INADDR_ANYを使用して、パケットが送信されたインターフェイスを何とか見つける必要がありますか?

この問題を解決する別の方法はありますか?

答えて

28

あなたのいずれかからbind(2) ソケットINADDR_ANY持つすべてインターフェイス、又は複数のソケットを作成して、所望のインタフェースのIPアドレスにそれぞれ結合します。いずれの場合も、ソケットにはSO_REUSEADDRオプションを設定してください。

+0

非常に助かりました。ありがとうございました! –

+0

あなたは*ここで答えを受け入れることができます。あなたは知っていますか?:) –

+0

@NikolaiNFetissov INADDR_ANYを使用すると65K以上の接続制限を受け入れることができますか、それとも各IPを別々にバインドする必要がありますか? – Etherealone

関連する問題