MulticastSocket multicast_socket = new MulticastSocket(Dialogos.MULTICAST_PORTA);
InetAddress group = InetAddress.getByName(Dialogos.MULTICAST_IP_GRUPO);
multicast_socket.joinGroup(group);
byte[] msg = new byte[1024];
DatagramPacket packet = new DatagramPacket(msg, msg.length);
multicast_socket.receive(packet);
上記のコードでは、サーバーはマルチキャストを介してクライアントから要求を受信しています。サーバーは、クライアントに「どこに」あるかを通知することになっています。これは、クライアントが接続先を推測するための1つの方法にすぎず、完全に依存しているわけではありません。
ただし、サーバーはさまざまな環境にインストールできるため、クライアントとの通信にどのインターフェイス/アドレスを使用するかはわかりません。したがって、クライアントにそれがどこにあるかを伝えるために、サーバーで使用可能なすべてのIPアドレスをコンパイルし、それらをすべてマルチキャストで送り返して、クライアントが成功するまでそれらを試すことができるようにします。
私の質問:このメカニズムを改善する方法はありますか?サーバーアプリで、クライアントからマルチキャストを受信したローカルIPを取得できたら、どちらを返送するかがわかります。しかし、それを行うメソッドを見つけることができません。たぶん、クライアントがどのローカルアドレスを選択するかを知るためだけに、クライアントへの接続を試みる方法はありますか?