Xamarin.Forms 连接时出现 "No route to host" 异常的应用程序 TcpClient 错误

Xamarin.Forms app TcpClient Error on Connect with "No route to host" exception

我遇到了一个很奇怪的问题。我有 2 个应用程序,一个只是我的概念证明,另一个是我的真实应用程序。两者都是 Xamarin.Forms 应用程序,支持 Android、iOS 和 UWP。

这两个应用程序都使用 TcpClient 连接到我在另一台机器上的 IP 和端口号。但事情是这样的:

  1. 我的概念验证应用运行良好,可以发送和接收数据 to/from 那 IP/Port#
  2. 我还在 Android 上使用应用程序 TerminalEmulator 并在 iOS 上使用 Ping,这允许您对 IP 地址执行 ping 操作。两台设备都能够 ping 通 IP,这意味着 IP 对设备可见
  3. 但是,如果我尝试从相同设备上的真实应用进行连接,我会收到 "No route to host" 异常

为什么我的 POC 应用程序可以连接,我可以从我的 Android/IOS 设备 ping 主机,但我无法从我的真实应用程序连接并收到此错误:

这是我尝试连接的方式

public override async Task<IList<RoomGuestModel>> GetRoomGuestAsync(string roomNumber)
{
    using (TcpClient client = new TcpClient())
    {
        try
        {
            client.Connect(_tcpConnection.Address, _tcpConnection.Port);
        } 
        catch(Exception ex)
        {

        }
        ...
        ...
        // use NetworkStream to write message and read message
        await myStream.WriteAsync(...);
        ...
        await myStream.ReadAsync(...);

问题是我使用了错误的 IP 地址,一旦我提供了正确的地址,我就能够连接