我试图弄清楚当我的客户端软件无法连接到远程服务器时如何向用户提供更好的反馈。我认为我想区分以下几种情况:
- 无效/离线服务器
- 有效的服务器,但端口已关闭
- 有效的服务器,但不同的程序正在使用该端口
- 连接成功
我遇到的问题是 #1 需要超过一分钟才能超时。#2 和 #3 几乎立即失败。有没有办法让#1 更快地失败?
您可以实现连接超时
http://www.codeproject.com/Articles/31514/Implementation-of-Connecting-a-Socket-with-Timeout
只需确保将连接超时值设置为对您尝试访问的服务器而言合理的值(如果有时需要 5 秒才能到达,请不要将其设置为 1 秒)。