【发布时间】: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(),它得到一个超时异常。
- 服务器正在运行并侦听新连接
- 我可以从我的所有设备(包括我的 Android 设备)ping 服务器
- 我可以在我的 Android 设备上使用 telnet 连接到服务器,方法是传入与我在上面的代码中所做的完全相同的地址和端口
- 从我的 Android 设备使用 telnet 时,我还看到服务器接收到连接并说已建立新连接
- 我已重新启动我的 Android 设备和服务器计算机
- 服务器计算机上的防火墙已完全禁用
- 我没有尝试重新启动路由器/调制解调器。如果可能的话,我想找到问题的根源。
我什至在连接了 Visual Studio 的情况下运行了服务器,以查看它在处理之前是否接收到任何类型的连接,但它从来没有收到任何东西。
有什么想法吗?
[更新]
我在我的计算机上编写了一个测试应用程序,尝试使用我上面编写的完全相同的代码进行连接。它没有使用给定的 IP 地址进行连接。但是,我将 IP 更改为服务器本地 IP 并连接。
这样,我尝试在没有 Wifi 的情况下连接我的 Android,但仍然无法正常工作。
那么,什么会阻止它使用实际 IP 地址而不是本地 IP 地址进行连接?
【问题讨论】:
-
在 StackOverflow 上获得此类环境相关问题的帮助几乎没有成功。如果您怀疑存在网络或环境问题,请尝试serverfault.com
-
感谢您的回复。我不知道存在服务器故障。我一定会记住这一点。我解决了这个问题,但我仍然不知道为什么会出现问题。
标签: c# timeout connection tcpclient