どちらのアプリケーションも同じポートにバインドする必要があります。

どちらのアプリケーションも同じポートにバインドする必要があります。

アプリケーションのデフォルトポートではなく、モニターコンソールと同じTCPポート(および同じインターフェース)を使用する2つのアプリケーションがあります。そのポートの使用には興味がなく、SO_REUSEADDRを変更したり、ポートのソースコードを変更したりすることはできません。

これら2つのアプリケーションを同じオペレーティングシステムで実行するにはどうすればよいですか?

答え1

カーネルがこれを許可している場合、どの受信接続がどのアプリケーションに接続されるべきかを知る方法はありません。

アプリケーションを別のIPにバインドする必要があります。ほとんどのアプリケーションはこれを行うことができます(ただし、ほとんどはポートの変更も許可します...)。

アプリケーションがこれを許可しない場合は、異なるネットワークスタック(2つの異なる物理マシンまたは仮想マシン、たぶんドッカー)で実行します。

答え2

直接テストしませんでしたが、Linuxでは、NICに2つの異なるIPを設定し、次のものを使用できますbindhack

https://superuser.com/questions/241178/how-to-use- Different-network-interfaces-for- Different-processes

http://www.ryde.net/code/bind.c.txt

それ以外の場合は、16進エディタを使用してバイナリのハードコードされたポート番号を変更できます。デバッガで分解または実行すると、それを変更する正しい場所を見つけるのに役立ちます。

関連情報