C#TcpClient Connect()由于未知原因而超时

时间:2018-10-05 19:33:21

标签: c# timeout connection tcpclient

我的代码可以正常运行将近两年,并且可以连接到我创建的服务器。突然,我无法再连接TcpClient。

正在连接的客户端在我的Android设备(Android版本6.0)上运行。

TcpClient tcpClient = new TcpClient();
bool success = tcpClient.ConnectAsync(ServerIP, Port).Wait(TimeSpan.FromSeconds(5));
if (success)
    stream = tcpClient.GetStream();

此任务始终返回false。我尝试使用阻塞函数tcpClient.Connect(),但收到超时异常。

  1. 服务器正在运行并且正在侦听新连接
  2. 我能够从包括Android设备在内的所有设备上ping服务器
  3. 通过传递与我上面代码中相同的确切地址和端口,我可以使用telnet从我的Android设备连接到服务器
  4. 从我的Android设备使用telnet时,我还看到服务器接收到该连接,并说已建立了新连接
  5. 我已经重新启动了我的Android设备和服务器计算机
  6. 服务器计算机上的防火墙被完全禁用
  7. 我没有尝试重新启动路由器/调制解调器。我想尽可能找到问题的根源。

我什至在连接了Visual Studio的服务器上运行,以查看它在处置前是否接收到任何形式的连接,但从未收到任何东西。

有什么想法吗?

[更新]

我在计算机上编写了一个测试应用程序,以尝试使用上面编写的相同代码进行连接。它没有使用给定的IP地址进行连接。但是,我将IP更改为服务器的本地IP,并且已连接。

这样,我尝试在没有Wifi的情况下连接我的Android,但仍然无法正常工作。

那么什么会阻止它使用实际IP地址而不是本地地址进行连接?

1 个答案:

答案 0 :(得分:0)

[ANSWER]

我尝试重置路由器/调制解调器,但没有成功。因此,我将服务器上的本地IP更改为其他名称(正在使用 192.168.0.2 ,将其更改为 192.168.0.4 )并且可以正常工作。

我再次检查以确保网络上没有IP冲突,并且一切都很好,所以我不确定为什么 192.168.0.2 导致连接失败。

现在一切都好。