微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 InetSocketAddress 创建 DatagramPacket,缺少构造函数

如何解决使用 InetSocketAddress 创建 DatagramPacket,缺少构造函数

我正在尝试使用多播向多个客户端发送数据。 我查看了文档: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 没有这样的构造函数。 这是文档中的错误还是我愚蠢?

解决方法

似乎是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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。