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

Android应用跨局域网调用本地gRPC服务器失败求助

局域网gRPC客户端连接服务器故障排查方案

问题背景

  • 服务器:Windows笔记本,基于.NET 6 + Grpc.AspNetCore 2.40.0,运行在7773端口,未启用HTTPS
  • 客户端:Android应用,基于.NET 6 + Uno UI + Grpc.Net.Client 2.46.0,与服务器处于同一局域网
  • 连接失败报错:
    {ManagedException, High : Status(StatusCode="Unavailable", Detail="Error connecting to subchannel.", DebugException="System.Net.Sockets.SocketException (110): Connection timed out
       at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
       at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
       at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
       at Grpc.Net.Client.Balancer.Internal.SocketConnectivitySubchannelTransport.TryConnectAsync(CancellationToken cancellationToken) in /_/src/Grpc.Net.Client/Balancer/Internal/SocketConnectivitySubchannelTransport.cs:line 138")}
    
  • 已验证可成功连接的场景:
    • 同一PC上运行的Windows应用客户端
    • PC模拟器内的Android应用客户端
    • USB反向代理(adb reverse tcp:8080 tcp:7773)下的手机客户端
  • 手机可ping通PC局域网IP,客户端尝试连接地址为http://192.168.0.246:7773

防火墙补充设置

  • 校验入站规则细节
    打开Windows Defender防火墙高级设置,找到已添加的7773端口入站规则,逐一检查:
    • 作用域:确保「远程IP地址」设置为「任何IP地址」,或包含手机所在的局域网网段(如192.168.0.0/24)
    • 协议和端口:确认协议为TCP,本地端口指定7773,远程端口设为「所有端口」
    • 高级选项:确保规则应用到当前使用的网络类型(如「专用」网络,对应你的局域网类型)
  • 临时关闭防火墙测试
    临时关闭Windows Defender防火墙,若此时连接成功,说明原防火墙规则存在疏漏,回到上一步重新配置
  • 检查第三方防火墙
    若安装了其他杀毒/防火墙软件(如360、腾讯电脑管家),需在对应软件中同步开放7773端口的TCP入站权限

其他必要配置项

  • 修正服务器绑定IP
    默认ASP.NET Core应用可能仅绑定localhost(127.0.0.1),无法接收局域网其他设备请求,需修改配置让服务器监听所有IP或指定局域网IP:
    • 在Program.cs中添加Kestrel配置:
      builder.WebHost.ConfigureKestrel(options =>
      {
          options.ListenAnyIP(7773); // 监听所有IP的7773端口
          // 或指定PC局域网IP:options.Listen(IPAddress.Parse("192.168.0.246"), 7773);
      });
      
    • 或启动时用命令行参数指定:dotnet run --urls=http://0.0.0.0:7773
  • 确认客户端连接地址有效性
    用PC端ipconfig命令确认当前局域网IPv4地址,确保客户端使用的地址与之一致;建议给PC设置静态局域网IP,避免动态IP导致的地址变化
  • 排查局域网限制
    • 检查路由器是否开启AP隔离功能,若开启需关闭(部分路由器默认开启,会阻止局域网设备互访)
    • 确保PC和手机连接到同一WiFi频段(同为2.4G或5G,跨频段可能存在通信限制)
  • gRPC客户端非HTTPS配置
    因未使用HTTPS,需在客户端允许不安全的HTTP连接(仅用于开发测试,生产环境必须用HTTPS):
    var channel = GrpcChannel.ForAddress("http://192.168.0.246:7773", new GrpcChannelOptions
    {
        HttpHandler = new HttpClientHandler
        {
            ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
        }
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:42:51