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

Unity开发安卓应用与PC端C# TCP服务器连接失败问题咨询

问题排查与解决方案

  • Android联网权限缺失
    Unity打包Android APK时默认不会主动授予完全的联网权限,这是90%以上同类问题的诱因。
    修复方法:打开Unity编辑器的 Edit > Project Settings > Player,切换到Android平台标签页,找到Publishing Settings配置项,将Internet Access选项设置为Required,不要使用默认的Auto,避免Unity无法识别TCP联网需求遗漏权限配置。

  • 服务端监听地址配置错误
    若你的C#控制台服务端监听的是本地回环地址127.0.0.1,则仅允许本机程序接入,同一局域网的其他设备无法连接。
    修复方法:修改服务端监听逻辑,绑定地址改为0.0.0.0(监听本机所有网卡)或者你的PC局域网固定IP 192.168.1.133。

  • 主线程阻塞调用网络接口
    Android系统强制禁止在UI主线程执行阻塞式网络操作,你在connectBtn方法中直接调用同步TcpClient.Connect方法,在手机上运行时会直接抛出异常中断执行,而Unity Editor运行时没有这项限制,所以PC端测试正常。
    修复方法:将同步网络调用改为异步实现,可复用你已经写好的Client类中的ConnectAsync异步方法,或者将网络操作放到单独的子线程中执行。

  • 缓冲区未手动刷新导致数据未发送
    你使用BufferedStream写入数据后直接释放对象,数据可能还滞留在缓冲区中未实际发出,不同设备的缓冲区触发自动刷新的阈值不同,就会出现PC正常手机无数据的情况。
    修复方法:调用bufferedStream.Write之后新增一行bufferedStream.Flush()强制刷出缓冲区数据,或者直接去掉BufferedStream封装,直接向NetworkStream写入数据即可。

简易排查步骤

  1. 先在手机上安装局域网端口扫描工具,扫描PC的5000端口是否开放可访问,先确认网络链路无问题
  2. 在Unity中开启Android日志输出,运行APK时查看具体报错信息,可快速定位问题点

注:你当前贴出的C#服务端代码和Unity客户端代码重复,若服务端逻辑有其他问题可自行核对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:48:03