Исключение сокета : Нет маршрута к хосту

#c# #ios #unity3d #tcpclient

Вопрос:

Может ли кто-нибудь сказать мне, почему iPhone 11 блокирует приложение Unity от использования сети Wi-Fi при попытке подключиться к устройству через Интернет ? в то время как другой iPhone 7 с той же версией ios и тем же приложением Unity этого не делает !!

Я использую функцию C# System.Net.Sockets для создания клиентского приложения TCP, она очень хорошо работает в симуляторе Unity, а также на устройствах Android, эта проблема просто возникает с моим iPhone 11.

Проверил все брандмауэры и ограничения, и все кажется таким же, но все равно получаю ту же ошибку : Исключение SocketException: Нет маршрута к хосту

вот функция, которую я использую :

     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;
    }
 

Комментарии:

1. Я думаю, что вы должны предоставить некоторые права для своего приложения.

2. @BASKA ХОРОШО, но как ?

3. Вы говорите, что хотите подключиться к «устройству через Интернет», но 192.168.x.x-это не маршрутизируемая сеть, поэтому она должна быть подключена к тому же Wi-Fi, что и устройство. Так ли это на самом деле? Ответ указывает, что у устройства нет маршрута к 192.168.1.80, поэтому оно не находится в этой IP-сети.

4. Приложение может получить доступ к устройству через локальную сеть-например, IP, который я здесь назначаю, — или предоставив приложению общедоступный IP-адрес устройства и переадресовав порт на указанный порт для достижения указанного IP-адреса. Проблема не здесь, как я уже сказал, но в некоторых айфонах это работает, а в других-нет !

5. Затем проверьте подключение этих устройств; Отсутствие маршрута к хосту означает именно это; было получено сообщение о недоступности ICMP или устройству не удалось найти маршрут-кандидат в своей таблице маршрутизации.

Ответ №1:

Это может произойти, когда вы подключаете свой мобильный телефон к сети, отличной от сети вашего компьютера. В разных сетях могут быть разные правила брандмауэра.

ПК обычно подключается через внутреннюю сеть (обычно Ethernet). В то время как мобильные телефоны обычно подключаются через Wi-Fi с более строгими правилами брандмауэра.