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

使用websocket-sharp跨设备连接失败,Unity提示“非本地IP地址”求助

解决跨机器WebSocket连接的"Not a local IP address"问题

别担心,刚接触WebSocket遇到这类跨机器连接问题太正常了,完全不用不好意思~

首先,你猜测的防火墙/端口未开放确实是最常见的原因,但还有一个容易忽略的点需要先排查:

先确认服务器端的绑定地址

如果你的WebSocket服务器代码里绑定的是localhost(也就是IPAddress.Loopback),那它只会监听本地请求,外部机器根本连不上。你需要把服务器绑定到0.0.0.0(也就是IPAddress.Any),这样才能接收来自任意IP的连接。比如websocket-sharp的服务器初始化代码应该是:

var wssv = new WebSocketServer(IPAddress.Any, 你的端口号);

如果确认服务器绑定没问题,那接下来就需要检查防火墙是否开放了目标端口,下面分别说Mac和Linux的操作方法:


Mac上开放指定端口

方法1:通过系统图形界面(基于应用授权)

  1. 打开「系统偏好设置」→「安全性与隐私」→切换到「防火墙」标签页
  2. 点击左下角的锁图标,输入管理员密码解锁
  3. 点击「防火墙选项」,然后点击「添加」按钮
  4. 找到你的Unity客户端程序,添加进去并设置为「允许连接」,这样程序就能自由访问外部端口了

方法2:通过命令行(直接开放端口)

如果需要直接针对端口开放(而非特定应用),可以用pf防火墙规则:

  1. 打开终端,编辑pf配置文件:
    sudo nano /etc/pf.conf
    
  2. 在文件末尾添加一行规则(替换你的端口号为实际使用的端口):
    pass in proto tcp from any to any port 你的端口号
    
  3. 按Ctrl+O保存,Ctrl+X退出编辑器
  4. 加载新规则并启用pf(如果没开启的话):
    sudo pfctl -f /etc/pf.conf
    sudo pfctl -e
    

Linux上开放指定端口

根据你的Linux发行版不同,操作略有区别:

对于Ubuntu/Debian(使用ufw防火墙)

  1. 先检查ufw的状态:
    sudo ufw status
    
  2. 开放目标TCP端口(WebSocket默认用TCP协议):
    sudo ufw allow 你的端口号/tcp
    
  3. 重启ufw使规则生效:
    sudo ufw reload
    

对于CentOS/RHEL(使用firewalld防火墙)

  1. 先检查firewalld状态:
    sudo firewall-cmd --state
    
  2. 临时开放端口(重启后失效):
    sudo firewall-cmd --add-port=你的端口号/tcp
    
  3. 设置永久生效的规则:
    sudo firewall-cmd --add-port=你的端口号/tcp --permanent
    
  4. 重启防火墙加载新规则:
    sudo firewall-cmd --reload
    

最后,你可以先用ping [Linux服务器IP]测试Mac和Linux的网络连通性,再用telnet [Linux服务器IP] 你的端口号或者nc -zv [Linux服务器IP] 你的端口号测试端口是否能正常访问,这样能快速定位问题所在~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:25:12