【发布时间】:2018-10-05 06:13:44
【问题描述】:
我在 java 中的客户端服务器项目中工作。我正在使用 MulticastSocket 。我必须向选择性客户发送一些消息。但我不知道如何获得加入的客户地址。谁能帮帮我。
【问题讨论】:
标签: java multicastsocket
我在 java 中的客户端服务器项目中工作。我正在使用 MulticastSocket 。我必须向选择性客户发送一些消息。但我不知道如何获得加入的客户地址。谁能帮帮我。
【问题讨论】:
标签: java multicastsocket
使用下面的代码,这可能会对你有所帮助。
private void init() throws IOException {
DatagramChannel channel = DatagramChannel.open(StandardProtocolFamily.INET);
channel.setOption(StandardSocketOptions.SO_REUSEADDR, true);
channel.configureBlocking(true); //optional
channel.bind(new InetSocketAddress(5000));
InetAddress iGroup = InetAddress.getByName("224.0.0.1");
NetworkInterface intrf = NetworkInterface.getByName("lo"); // lo name could be changed according your requirement
channel.setOption(StandardSocketOptions.IP_MULTICAST_IF, intrf);
channel.join(iGroup, intrf);
}
【讨论】:
DatagramChannel。但在我的场景中,客户加入没有限制。任意数量的客户端都可以加入,他们会做一些其他的操作。例如,如果有 10 个客户端加入我的网络,我必须向选择性的 5 个客户端发送消息。
MulticastSocket,在这里我怎样才能获得加入的客户地址。当我使用MulticastSocket 时,无法获取客户详细信息。但它会向所有客户端发送消息。这是我向所有客户发送消息的代码String s = txtin.getText(); DatagramPacket p = new DatagramPacket(s.getBytes(), s.length(), group, 4444); msoc.send(p);