套接字异常:没有到主机的路由
Posted
技术标签:
【中文标题】套接字异常:没有到主机的路由【英文标题】: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 不可达消息或设备无法在其路由表中找到候选路由。 【参考方案1】:当您通过与 PC 不同的网络连接手机时,可能会发生这种情况。不同的网络可以有不同的防火墙规则。
PC 通常通过内部网络(通常是以太网)连接。而手机一般都是通过WIFI连接,防火墙规则比较强。
【讨论】:
以上是关于套接字异常:没有到主机的路由的主要内容,如果未能解决你的问题,请参考以下文章
从 Azure 中托管的 ASP.NET Core 5.0 MVC 站点调用 API/服务的间歇性套接字异常