【发布时间】: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 不可达消息或设备无法在其路由表中找到候选路由。