【问题标题】:C# TcpClient Connect() gets timeout for unknown reasonC# TcpClient Connect() 因未知原因而超时
【发布时间】:2019-03-11 08:26:46
【问题描述】:

我的代码近两年来一直运行良好,但它连接到我创建的服务器。突然,我无法再让 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. 我可以在我的 Android 设备上使用 telnet 连接到服务器,方法是传入与我在上面的代码中所做的完全相同的地址和端口
  4. 从我的 Android 设备使用 telnet 时,我还看到服务器接收到连接并说已建立新连接
  5. 我已重新启动我的 Android 设备和服务器计算机
  6. 服务器计算机上的防火墙已完全禁用
  7. 我没有尝试重新启动路由器/调制解调器。如果可能的话,我想找到问题的根源。

我什至在连接了 Visual Studio 的情况下运行了服务器,以查看它在处理之前是否接收到任何类型的连接,但它从来没有收到任何东西。

有什么想法吗?

[更新]

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

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

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

【问题讨论】:

  • 在 StackOverflow 上获得此类环境相关问题的帮助几乎没有成功。如果您怀疑存在网络或环境问题,请尝试serverfault.com
  • 感谢您的回复。我不知道存在服务器故障。我一定会记住这一点。我解决了这个问题,但我仍然不知道为什么会出现问题。

标签: c# timeout connection tcpclient


【解决方案1】:

[回答]

我尝试重置我的路由器/调制解调器,但没有成功。因此,我将服务器上的本地 IP 更改为其他 IP(使用 192.168.0.2,我将其更改为 192.168.0.4)并且它起作用了。

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

现在一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多