【发布时间】:2018-03-23 11:54:31
【问题描述】:
在尝试让一个简单的 UDP 多播接收器正常工作后,我感到很困惑。 在我自己的代码没有按预期工作后,我尝试了 vertx 文档中发布的确切示例:
DatagramSocket socket = vertx.createDatagramSocket(new DatagramSocketOptions());
socket.listen(1234, "0.0.0.0", asyncResult -> {
if (asyncResult.succeeded()) {
socket.handler(packet -> {
// Do something with the packet
});
// join the multicast group
socket.listenMulticastGroup("230.0.0.1", asyncResult2 -> {
System.out.println("Listen succeeded? " + asyncResult2.succeeded());
});
} else {
System.out.println("Listen failed" + asyncResult.cause());
}
});
执行后出现如下异常:
java.lang.NullPointerException: networkInterface
at io.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:409)
at io.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:368)
at io.netty.channel.socket.nio.NioDatagramChannel.joinGroup(NioDatagramChannel.java:362)
at io.vertx.core.datagram.impl.DatagramSocketImpl.listenMulticastGroup(DatagramSocketImpl.java:90)
当提供正确的网络接口 IP 地址(例如 192.168.178.52)而不是 0.0.0.0 时,我可以让它工作。但是,这意味着遍历所有网络接口并为每个接口添加一个套接字。
有什么想法吗?谢谢!
【问题讨论】:
-
初始化过程中出现问题,您需要仔细调试它。可能
NetworkInterface.getByInetAddress(localAddress().getAddress())是问题