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

UDP收发程序异常:接收器无法接收UDP数据包

UDP接收端无法收到数据包的排查方案

1. 验证端口配置与加载正确性

  • 检查fifa.properties文件中的PORT值是否与发送端使用的端口一致,建议在代码中添加日志确认加载后的端口:
    int port = Integer.parseInt(props.getProperty("PORT"));
    System.out.println("Loaded port: " + port); // 添加此行确认端口
    
  • 避免使用1-1024的系统保留端口,若使用此类端口需以管理员权限运行程序。

2. 排查发送端实现问题

  • 确认发送端是否指定了正确的目标IP和端口:本机测试时,目标IP建议用127.0.0.1而非0.0.0.0或本机公网IP;
  • 可以用简化的发送端代码测试:
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UDPSender {
        public static void main(String[] args) throws Exception {
            int port = 你的端口号; // 替换为接收端实际端口
            DatagramSocket clientSocket = new DatagramSocket();
            InetAddress IPAddress = InetAddress.getByName("127.0.0.1");
            byte[] sendData = "test".getBytes("UTF-8");
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
            clientSocket.send(sendPacket);
            clientSocket.close();
        }
    }
    
  • 也可以用系统工具测试:Windows在cmd执行echo test | nc -u 127.0.0.1 端口号,Linux/macOS执行echo "test" | nc -u 127.0.0.1 端口号,验证接收端是否能收到数据。

3. 检查Socket绑定地址

  • 当前代码创建DatagramSocket时仅指定端口,默认绑定到0.0.0.0(所有网卡),但如果本机多网卡或监听地址与发送端目标IP不匹配,可能导致收不到数据。可以显式绑定到127.0.0.1测试:
    DatagramSocket serverSocket = new DatagramSocket(port, InetAddress.getByName("127.0.0.1"));
    
  • 确认程序打印的监听地址(Listening on udp:...)与发送端目标IP一致,若打印的是本机公网IP,但发送端用127.0.0.1发送,可能因网卡绑定问题无法接收。

4. 完善异常排查信息

  • 将catch块的System.out.println(e);改为e.printStackTrace();,这样能看到完整的异常栈,排查初始化阶段的错误(如文件找不到、端口被占用、权限不足等);
  • 检查fifa.properties文件路径是否正确,程序是否有读取权限:若文件加载失败,Integer.parseInt会抛出NumberFormatException,可能导致程序直接终止。

5. 检查端口占用情况

  • 用命令确认端口是否被其他程序占用:
    • Windows:netstat -ano | findstr :端口号
    • Linux/macOS:lsof -i :端口号
  • 若端口被占用,接收端无法绑定会抛出BindException,通过完整异常栈可以发现该问题。

内容的提问来源于stack exchange,提问作者Jean McCourt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:53:17