You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java在Windows加入多播组时出现SocketException故障求助

Java MulticastSocket 加入多播组失败异常解决

异常信息

at java.net.TwoStacksPlainDatagramSocketImpl.join(Native Method) ~[?:1.8.0_211]
at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:178) ~[?:1.8.0_211]
at java.net.MulticastSocket.joinGroup(MulticastSocket.java:323) ~[?:1.8.0_211]

问题背景

该多播功能此前正常运行数月,近期突然失效。核心代码及参数如下:

变量定义

private String address = null;

/** group */
private InetAddress group = null;
    
/** port to broadcast over */
private int port = -1;

/** connected multicast socket */
MulticastSocket socket = null;

加入多播组代码

group = InetAddress.getByName(address);
socket = new MulticastSocket(port);
socket.joinGroup(group);

参数值

  • port = 4580
  • address = 224.0.0.1

环境信息

  • 操作系统:Windows 10 Home 10.0.19044 Build 19044
  • 内存:40GB(32GB + 8GB)
  • 处理器:i7-10510U
  • Java版本:1.8.0_211
  • IDE:Eclipse 2021-03 (4.19.0)
  • Tomcat版本:9.0
  • 额外软件:VMware、Wireshark(此前安装后无异常)

已尝试的无效操作

  • 向JVM添加参数-Djava.net.preferIPv4Stack=true
  • 代码中设置System.setProperty("java.net.preferIPv4Stack", "true");
  • 断开笔记本电脑网络连接

可行解决步骤

  1. 检查网卡多播启用状态
    打开「网络连接」→右键当前使用的网卡→「属性」→「配置」→「高级」,找到多播相关选项(如Multicast Enable),确保设置为「启用」。不同网卡厂商的选项名称可能略有差异。

  2. 排查端口占用
    执行命令检查4580端口是否被其他进程占用:

    netstat -ano | findstr :4580
    

    若有占用,可更换端口或终止对应进程后重试。

  3. 指定网卡加入多播组
    原代码自动选择网卡可能因系统网卡优先级变化失效,尝试指定具体本地网卡加入:

    // 替换为你的本地IPv4地址,如192.168.1.100
    InetAddress localAddress = InetAddress.getByName("你的本地IPv4地址");
    NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localAddress);
    socket.joinGroup(new InetSocketAddress(group, port), networkInterface);
    

    可通过NetworkInterface.getNetworkInterfaces()遍历所有网卡,筛选出支持多播的网卡。

  4. 重置Windows网络栈
    执行以下命令重置网络,重启电脑后测试:

    netsh winsock reset
    netsh int ip reset
    
  5. 排查VMware虚拟网卡影响
    VMware创建的虚拟网卡可能干扰系统默认路由,暂时禁用VMware相关虚拟网卡(「网络连接」中右键禁用),再测试多播功能是否恢复。

  6. 升级Java版本
    Java 8u211存在部分网络底层bug,升级至Java 8u381及以上同系列版本,可修复部分Native方法异常。

内容的提问来源于stack exchange,提问作者Akila Uyanwatta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:43:10