NIO を使用して複数のサーバー (その多くは同じポートに応答するように構成されている) からの UDP パケットをリッスンするクライアント コードを作成しています。既知の各サーバーNIOに専用のチャネルを設定しようとして失敗しました。2 つのクライアントが同じポートにバインドされていますが、1 つだけが読み取り可能です。
だから私は今、宛先を指定せずにポートにバインドしようとしています
DatagramChannel channel = DatagramChannel.open();
channel.configureBlocking(false);
channel.socket().bind(new InetSocketAddress(port));
私のセレクターは、すべてのサーバーからこのポートに向けられたすべての UDP パケットを正常に受信するようになりました
...
SelectionKey selKey = it.next();
if (selKey.isValid() && selKey.isReadable()) {
DatagramChannel sChannel = (DatagramChannel) selKey.channel();
sChannel.getRemoteAddress();//My problem lies here
....
予想どおり sChannel.getRemoteAddress() は、構成していないため null を返します。では、このパケットの発信元を特定するにはどうすればよいでしょうか。