同じ実行可能イメージを共有しない異なるプロセス(つまり、fork()
はありません)では、TCPを使用して、Windows、Linux、またはOSX上で同じクライアント側ポートを使用できますか?これは具体的にはソケットのオプションSO_REUSEADDR
とSO_REUSEPORT
がsetsockopt()
を使用して設定されていると考えられます。TCP - 異なるクライアント側のポートを、異なるアプリケーション間で異なる接続に同時に使用することは可能ですか?
私が読んだ限り、同じプロセス/イメージでこれを行うことは可能ですが、複数のプロセス/イメージに関する情報は見つかりませんでした。各ソケットは5値タプル[IP_PROTO、src_ip:src_port、dst_ip:dst_port]で定義されているので、理論的には可能です。だから私は、クライアント側のポートを共有する複数のTCP接続が同じdst_ip:dst_portに作られていない限り、これは理論的に可能であると仮定します。
私はしたくないですが、この動作が可能かどうかに依存するので、他のアプリケーションがこれを行うことができるかどうかを知る必要があります。 –
これは実際には異なるアプリケーションで可能であることを理解していますか? –
*可能ですか?同じポート上のすべてのソケットが 'SO_REUSEADDR' /' SO_REUSEPORT'を使用するなら、そうです。それはおそらく*でしょうか?いいえ。 –