#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 с более строгими правилами брандмауэра.