我可以从wireshark看到我的Java应用程序中的udp多播流量

时间:2015-04-28 10:03:05

标签: java networking udp nio wireshark

我正在尝试加入udp多播组,以便在Windows 7中使用jdk 1.8+环境接收udp数据。

我正在使用NIO DatagramChannel来接收数据。 看来我的程序运行良好因为我加入多播组后可以看到udp流量通过wireshark传入。 (当我的程序没有运行时,我看不到任何udp流量。)

InetAddress group = InetAddress.getByName(UDPGROUP_IP);
NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress.getByName(MY_IP));
DatagramChannel channel = DatagramChannel.open(StandardProtocolFamily.INET) ;

channel.setOption(StandardSocketOptions.SO_REUSEADDR, true).bind(new InetSocketAddress(port));
channel.join(group,ni);

channel.configureBlocking(false);

SocketAddress sa;
ByteBuffer buf = ByteBuffer.allocate(1024);

sa = channel.receive(buf);
if (sa != null ){

    byte[] byteReceived = new byte[BYTELEN]; 
    buf.flip();
    buf.get(byteReceived, 0, buf.limit());

    DefaultLogger.logger.info("Received :{}" , new String(byteReceived));

}

但是当我尝试接收上面的数据时,它总是返回null。 我曾经用不同的env运行这个程序,到目前为止一直运行良好。我找不到任何线索来解决这个问题。

我将不胜感激任何帮助或暗示。

1 个答案:

答案 0 :(得分:0)

我是个傻瓜,我甚至都没想过防火墙。 安装在此PC中的第三方安全软件正在保护我的程序以接收数据包。

谢谢你们。