良い質問。それは、ソリューションにどれだけ投資したいかによって異なります。私は2つの方法を想像できます:
1) デフォルトの実装を変更する最初の方法は、自分でもっと良いものを書くことです。リモート アクター ライブラリのすべてのコードはGitHubで入手できるため、それほど難しくありません。
私の提案は、 TcpSericeクラスの一部、特に 73 行目を次のように再実装することです。
private val internalNode = {
val interfaces = NetworkInterface.getNetworkInterfaces()
val interface = ... // find the right interface here
val addresses = interface.getInetAddresses()
val address = ... // find the right address here
new Node(address, port)
}
この方法では、何か他のものを追加または変更したい場合に、他のものをカスタマイズすることもできます.
2) もう 1 つの (そしておそらくもっと簡単な) 方法は、デフォルトの実装をすべて一緒に使用することを避け、代わりに非常に人気のあるアクター フレームワークakkaを使用することです。Akka は多くの追加機能を提供するだけでなく、効率性と堅牢性も提供します。彼らのGitHubとServerクラスを見ると、ホストが実際にはグローバル構成エントリ「ホスト名」から読み取られていることがわかります。構成を操作する方法に関する詳細なガイドは、こちらにあります。上記のようなコードを使用して、適切なインターフェイスとアドレスを見つけることができるはずです。
それが役立つことを願っています!