【问题标题】:Socket Exception : No route to host套接字异常:没有到主机的路由
【发布时间】:2021-08-25 12:25:15
【问题描述】:

谁能告诉我为什么 iPhone 11 在尝试通过 Internet 连接到设备时会阻止 Unity 应用程序使用 Wi-Fi 网络?而另一台具有相同 ios 版本和相同 Unity 应用程序的 iPhone 7 却没有这样做!

我正在使用 C# System.Net.Sockets 函数来制作 TCP 客户端应用程序,它在 Unity 模拟器和 Android 设备中运行良好,这个问题只发生在我的 iPhone 11 上。

检查了所有的防火墙和限制,一切似乎都一样,但仍然得到相同的错误:SocketException: No route to host

这是我使用的功能:

    public string IP = "192.168.1.80"; // or a public IP that forwards the request to the specified Local IP via the chosen Port
    public Int32 Port = 5000;
    byte[] SendBuf;
    byte[] RecBuf;
    int i;
    TcpClient TcpClient1;
    NetworkStream serverStream;
    Stopwatch Time = new Stopwatch();

     public Int16 MyFunction(UInt16 A, UInt16 data)
    {
        Int16 RetVal = 0;
        TcpClient1 = new TcpClient(AddressFamily.InterNetwork);
        TcpClient1.Connect(IP, Port);

        // here I write my code ...
        serverStream.Close();
        TcpClient1.Close();
        Time.Stop();
        return RetVal;
    }

【问题讨论】:

  • 我认为您必须为您的应用授予一些权限。
  • @BASKA 好的,但是如何?
  • 您说您要连接到“通过 Internet 的设备”,但 192.168.x.x 是非 routanlw 网络,因此它必须与设备在同一个 wifi 上。是这样吗?响应表明该设备没有到 192.168.1.80 的路由,因此它不在该 IP 网络上。
  • 应用程序可以通过本地网络访问设备 - 就像我在这里分配的 IP 一样 - 或者通过给应用程序设备的公共 IP 并在指定端口上进行端口转发以到达指定的 IP 地址。正如我所说的,问题不在这里,但在某些 iPhone 上它可以工作,而在其他 iPhone 上却不行!
  • 然后检查这些设备的连接性;没有通往主机的路线意味着这一点;收到 ICMP 不可达消息或设备无法在其路由表中找到候选路由。

标签: c# ios unity3d tcpclient


【解决方案1】:

当您通过与 PC 不同的网络连接手机时,可能会发生这种情况。不同的网络可以有不同的防火墙规则。

PC 通常通过内部网络(通常是以太网)连接。而手机一般都是通过WIFI连接,防火墙规则比较强。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2018-09-29
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多