現在、これが私の苦境です。x と y の 2 つの fd があります。write(x) が発生すると、x トンネルに移動し、write(y) は y トンネルに移動する必要があります。接続ごとにルーティング ルールを作成できない (ここに記載されていない理由)
接続を受け入れるときに設定できる sock opt はありますか、それとも他の方法がありますか?
ありがとう
現在、これが私の苦境です。x と y の 2 つの fd があります。write(x) が発生すると、x トンネルに移動し、write(y) は y トンネルに移動する必要があります。接続ごとにルーティング ルールを作成できない (ここに記載されていない理由)
接続を受け入れるときに設定できる sock opt はありますか、それとも他の方法がありますか?
ありがとう
あなたの説明は大ざっぱです。SO_REUSEADDR と SO_REUSEPORT の optname による setsockopt() が役立つと思いますが、よくわかりません。
ここでは、Unix ネットワーク プログラミングに関する参考文献をいくつか示します。詳細を知りたい場合は、7.5 章でそれらと例を読むことができます。
SO_REUSEADDR ソケット オプションには、次の 4 つの目的があります。
- SO_REUSEADDR を使用すると、このポートをローカル ポートとして使用する以前に確立された接続が存在する場合でも、リスニング サーバーはウェルノウン ポートを起動してバインドできます。
- SO_REUSEADDR を使用すると、各インスタンスが異なるローカル IP アドレスをバインドしている限り、ワイルドカード アドレスにバインドされている既存のサーバーと同じポートで新しいサーバーを起動できます。
- SO_REUSEADDR を使用すると、各バインドで異なるローカル IP アドレスが指定されている限り、1 つのプロセスで同じポートを複数のソケットにバインドできます。
- SO_REUSEADDR は、完全に複製されたバインドを許可します: トランスポート プロトコルがサポートしている場合、同じ IP アドレスとポートが既に別のソケットにバインドされている場合、IP アドレスとポートのバインド。通常、この機能は UDP ソケットでのみサポートされています。