2つのアプリケーションが同じポートをリッスンできますか? 質問する

2つのアプリケーションが同じポートをリッスンできますか? 質問する

同じマシン上の 2 つのアプリケーションを同じポートと IP アドレスにバインドできますか? さらに一歩進めて、1 つのアプリケーションが特定の IP からのリクエストをリッスンし、もう 1 つのアプリケーションが別のリモート IP からのリクエストをリッスンすることはできますか? 2 つのスレッド (またはフォーク) を開始する 1 つのアプリケーションで同様の動作をさせることはできますが、共通点のない 2 つのアプリケーションでも同じことができるのでしょうか?

ベストアンサー1

検討している OS によって答えは異なります。ただし、一般的には次のようになります。

TCP の場合は、できません。一度に同じポートをリッスンできるアプリケーションは 1 つだけです。ネットワーク カードが 2 つある場合は、同じポート番号を使用して、1 つのアプリケーションを最初の IP でリッスンし、2 番目のアプリケーションを 2 番目の IP でリッスンすることができます。

UDP (マルチキャスト) の場合、複数のアプリケーションが同じポートをサブスクライブできます。

編集: Linuxカーネル3.9以降では、SO_REUSEPORTオプションを使用して複数のアプリケーションが同じポートをリッスンするためのサポートが追加されました。詳細については、この lwn.net の記事。

おすすめ記事