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 和端口号。但事情是这样的:
- 我的概念验证应用运行良好,可以发送和接收数据
to/from 那 IP/Port#
- 我还在 Android 上使用应用程序 TerminalEmulator 并在 iOS 上使用 Ping,这允许您对 IP 地址执行 ping 操作。两台设备都能够 ping 通 IP,这意味着 IP 对设备可见
- 但是,如果我尝试从相同设备上的真实应用进行连接,我会收到 "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 地址,一旦我提供了正确的地址,我就能够连接
我遇到了一个很奇怪的问题。我有 2 个应用程序,一个只是我的概念证明,另一个是我的真实应用程序。两者都是 Xamarin.Forms 应用程序,支持 Android、iOS 和 UWP。
这两个应用程序都使用 TcpClient 连接到我在另一台机器上的 IP 和端口号。但事情是这样的:
- 我的概念验证应用运行良好,可以发送和接收数据 to/from 那 IP/Port#
- 我还在 Android 上使用应用程序 TerminalEmulator 并在 iOS 上使用 Ping,这允许您对 IP 地址执行 ping 操作。两台设备都能够 ping 通 IP,这意味着 IP 对设备可见
- 但是,如果我尝试从相同设备上的真实应用进行连接,我会收到 "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 地址,一旦我提供了正确的地址,我就能够连接