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

Java DatagramSocket无法接收DatagramPacket故障排查求助

UDP单向通信故障排查与Windows Defender防火墙配置方案

故障定位确认

你遇到的是UDP入站数据包被拦截的典型场景:无论自定义Java代码还是Oracle官方示例,仅桌面作为服务端时通信正常,反向则笔记本服务端无法收到桌面客户端的UDP请求。结合Wireshark抓包结果(ARP交互正常但无UDP响应),基本可以锁定是笔记本的Windows Defender防火墙拦截了入站UDP数据包。

故障排查步骤

  • 临时禁用防火墙验证
    打开Windows Defender防火墙,进入「启用或关闭Windows Defender防火墙」,将专用、公用网络下的防火墙全部关闭,重新测试UDP通信。如果通信恢复,直接坐实防火墙规则问题。
  • 检查端口监听状态
    在笔记本上启动服务端后,打开命令提示符执行:
    netstat -ano | findstr :<你的UDP端口号>
    
    确认服务端是否正常监听目标端口。如果无输出,说明服务端代码未正确绑定端口,优先排查代码问题。
  • 确认网络类型
    查看笔记本的网络连接类型:如果是「公用网络」,Windows Defender防火墙默认会严格拦截大部分入站请求,需要针对性配置规则。

Windows Defender防火墙配置方法

方法1:按UDP端口配置入站允许规则

  1. 打开Windows Defender防火墙「高级设置」,右键「入站规则」→「新建规则」。
  2. 规则类型选「端口」,点击「下一步」。
  3. 选择「UDP」,输入服务端使用的具体端口(比如Oracle QuoteServer默认的17),点击「下一步」。
  4. 操作选择「允许连接」,点击「下一步」。
  5. 根据实际使用场景勾选适用的网络类型(建议勾选「专用」,若需公用网络通信也可勾选),点击「下一步」。
  6. 给规则命名(如「允许UDP服务端端口入站」),添加描述后完成创建。

方法2:按Java程序配置入站允许规则

如果不想固定端口,可直接允许Java程序的入站通信:

  1. 新建入站规则,规则类型选「程序」,点击「下一步」。
  2. 选择「此程序路径」,找到你的Java可执行文件路径(例如C:\Program Files\Java\jdk1.8.0_301\bin\java.exe),点击「下一步」。
  3. 操作选择「允许连接」,后续步骤同方法1完成规则创建。

内容的提问来源于stack exchange,提问作者Max Ettwig

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:05:00