【问题标题】:Multicast Socket Joined Client Ip Address多播套接字加入的客户端 IP 地址
【发布时间】:2018-10-05 06:13:44
【问题描述】:

我在 java 中的客户端服务器项目中工作。我正在使用 MulticastSocket 。我必须向选择性客户发送一些消息。但我不知道如何获得加入的客户地址。谁能帮帮我。

【问题讨论】:

    标签: java multicastsocket


    【解决方案1】:

    使用下面的代码,这可能会对你有所帮助。

      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);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多