java - 我在java应用程序中看不到udp多播流量,而我可以从wireshark中看到

标签 java networking udp nio wireshark

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

我正在使用 NIO DatagramChannel 来接收数据。 看来我的程序运行良好,因为一旦我加入多播组,我就可以看到通过wireshark传入的udp流量。 (当我的程序未运行时,我看不到任何 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。 我曾经用不同的环境运行这个程序,到目前为止效果很好。我找不到任何线索来解决这个问题。

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

最佳答案

我真是个傻瓜,我什至没有考虑过防火墙。 这台电脑上安装的第 3 方安全软件正在保护我的程序接收数据包。

谢谢 friend 。

关于java - 我在java应用程序中看不到udp多播流量,而我可以从wireshark中看到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916298/

相关文章:

java - 如何使用 JavapreparedStatement 将 JSON 对象插入 Postgres?

java.lang.IllegalStateException : Required view 'caption' with ID 2131230791 for field 'caption' was not found

java - Maven 依赖项已下载但在项目内部无法识别

python - 时间服务器网络

java - 将 C 字符转换为 UTF-16 以便通过网络传输

java - throttle 服务 (79) : unable reading network stats

java - 通过UDP解码java中的C结构数据报包

java - Java 中常用的数据结构有哪些?

linux - Golang UDP Server 只接收本地发送的数据包

javascript - 如何在 Node.js 中的同一进程内监听同一地址上的不同 UDP 端口