
アプリケーションのデフォルトポートではなく、モニターコンソールと同じTCPポート(および同じインターフェース)を使用する2つのアプリケーションがあります。そのポートの使用には興味がなく、SO_REUSEADDRを変更したり、ポートのソースコードを変更したりすることはできません。
これら2つのアプリケーションを同じオペレーティングシステムで実行するにはどうすればよいですか?
答え1
カーネルがこれを許可している場合、どの受信接続がどのアプリケーションに接続されるべきかを知る方法はありません。
アプリケーションを別のIPにバインドする必要があります。ほとんどのアプリケーションはこれを行うことができます(ただし、ほとんどはポートの変更も許可します...)。
アプリケーションがこれを許可しない場合は、異なるネットワークスタック(2つの異なる物理マシンまたは仮想マシン、たぶんドッカー)で実行します。
答え2
直接テストしませんでしたが、Linuxでは、NICに2つの異なるIPを設定し、次のものを使用できますbindhack
。
http://www.ryde.net/code/bind.c.txt
それ以外の場合は、16進エディタを使用してバイナリのハードコードされたポート番号を変更できます。デバッガで分解または実行すると、それを変更する正しい場所を見つけるのに役立ちます。