【问题标题】:Create DatagramPacket with InetSocketAddress, missing constructor使用 InetSocketAddress 创建 DatagramPacket,缺少构造函数
【发布时间】:2021-08-27 12:37:37
【问题描述】:

我正在尝试使用 Mutlicast 向多个客户端发送数据。 我查看了文档:https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/net/MulticastSocket.html#setNetworkInterface(java.net.NetworkInterface)

// join a Multicast group and send the group salutations
 ...
 String msg = "Hello";
 InetAddress mcastaddr = InetAddress.getByName("228.5.6.7");
 InetSocketAddress group = new InetSocketAddress(mcastaddr, port);
 NetworkInterface netIf = NetworkInterface.getByName("bge0");
 MulticastSocket s = new MulticastSocket(6789);

 s.joinGroup(group, netIf);
 byte[] msgBytes = msg.getBytes(StandardCharsets.UTF_8);
 DatagramPacket hi = new DatagramPacket(msgBytes, msgBytes.length,
                                        group, 6789);

我的问题是最后一行。 DatagramPacket 类没有这样的构造函数。 这是文档中的错误还是我愚蠢?

【问题讨论】:

    标签: java javadoc multicast


    【解决方案1】:

    似乎是 JavaDocs 中的一个错误。我的代码现在运行,用于本地多播:

    // join a Multicast group and send the group salutations
     ...
     String msg = "Hello";
     InetAddress mcastaddr = InetAddress.getByName("228.5.6.7");
     InetSocketAddress group = new InetSocketAddress(mcastaddr, 6789);
     NetworkInterface networkInterface = NetworkInterface.getByInetAddress(InetAddress.getByName("localhost"));
     MulticastSocket s = new MulticastSocket(6789);
    
     s.joinGroup(group, netIf);
     byte[] msgBytes = msg.getBytes(StandardCharsets.UTF_8);
     DatagramPacket hi = new DatagramPacket(msgBytes, msgBytes.length,
                                            group);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      相关资源
      最近更新 更多