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

Unity3D无法接收PLC的UDP消息但Wireshark可捕获问题求助

问题:Unity无法接收PLC通过UDP发送的数据包(Wireshark可见但Unity收不到)

我来帮你一步步排查这个问题,结合你的场景和已做的操作,重点从网络配置和代码绑定两个方向入手:

一、先确认核心网络参数匹配

首先要确保PLC和你的笔记本网络参数完全对齐:

  • 你的笔记本静态IP是192.168.0.41,PLC的IP必须在同一网段(比如192.168.0.x,子网掩码设为255.255.255.0)
  • 一定要在PLC配置里确认:UDP消息的目标IP是192.168.0.41,目标端口是8052——你可以从Wireshark的数据包详情里核对这两个参数是否正确,这是最容易忽略的点。

二、你的Unity接收代码的关键问题

你当前的代码用new UdpClient(port)默认绑定IPAddress.Any,但笔记本通常有多网卡(有线、无线、虚拟网卡),很可能Unity的监听线程绑定到了其他网卡(比如无线网卡的IP),而PLC的数据包是发送到有线网卡的,自然收不到。

代码修改建议:明确绑定到以太网静态IP

把UdpClient的绑定改成指定连接PLC的以太网网卡IP,避免多网卡冲突:

private void init() {
    port = 8052;
    receiveThread = new Thread(ReceiveData);
    receiveThread.IsBackground = true;
    receiveThread.Start();
}

private void ReceiveData() {
    // 明确绑定到以太网的静态IP,而不是默认监听所有网卡
    IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("192.168.0.41"), port);
    client = new UdpClient(localEndPoint);
    
    while (true) {
        try {
            IPEndPoint remoteSender = new IPEndPoint(IPAddress.Any, 0);
            byte[] data = client.Receive(ref remoteSender);
            print($"Received from {remoteSender.Address}:{remoteSender.Port}, bytes: {data.Length}");
            // 后续数据处理逻辑
        } catch (Exception err) {
            print(err.ToString());
        }
    }
}

你之前测试本地127.0.0.1能收到,是因为本地回环不经过物理网卡,所以代码在回环场景下没问题,但外部设备的数据包需要通过指定物理网卡,这时候绑定明确IP就很关键。

三、其他快速排查点

  • 临时关闭无线网卡:多网卡可能导致系统路由错误,PLC的数据包被导向无线网卡,关掉无线后再测试。
  • 用第三方工具验证端口:用netcat工具在笔记本上监听端口:nc -ul 192.168.0.41 8052,如果能收到PLC的包,说明问题在Unity代码;如果收不到,就是系统层面的拦截(比如防火墙的应用权限限制,或者安全软件拦截)。
  • 检查PLC发送模式:如果PLC用的是广播模式,要确保Unity的UdpClient允许接收广播包(默认是允许的,但部分系统可能有配置限制)。

关于你的额外问题:Wireshark能看到包意味着什么?

Wireshark是工作在数据链路层的抓包工具,它直接从网卡抓取原始数据包,不会经过操作系统的防火墙、TCP/IP协议栈的上层过滤。所以Wireshark能看到包,说明数据包确实已经到达了你的笔记本物理网卡,但操作系统的防火墙、或者应用层的监听配置(比如Unity绑定错了网卡)可能把包拦截或者没接住——简单说:包到了网卡,但没到Unity的应用程序里。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:33:46