java HttpClient中“连接被拒绝”异常和超时之间的区别

xwbd5t1u  于 2023-02-15  发布在  Java
关注(0)|答案(1)|浏览(223)

我正在尝试确定网络上的设备是否运行Web服务器或不使用Java。为此,我使用Apache的HttpClient。我发送一个请求,如果设备运行Web服务器,我会得到一个响应-非常简单。
然而,如果一个Web服务器没有运行,那么我观察到两件事发生:

  • 该请求将被忽略并发生超时
  • 将抛出一个异常,具体如下:

发生异常:连接到www.example.com:80 [/192.168.12.133]失败:192.168.12.133连接 Connection refused: connect
当我收到"连接被拒绝"异常与完全没有响应时,是否可以推断出我试图连接的设备?
编辑:
只是澄清一下:我所做的是在本地网络上的设备上运行这个程序。这意味着NAS盒、路由器、Windows电脑、iPad等。有些会有嵌入式Web服务器,有些不会。大多数不会有防火墙。
我也百分之百确定设备已经启动并运行。

uqzxnwby

uqzxnwby1#

你不能100%确定地推断任何事情,但是:

  • 连接超时 * 可能 * 意味着主机/端口被防火墙保护,或者主机“关闭”。
  • 连接被拒绝 * 可能 * 意味着主机在您尝试连接的端口上没有运行任何服务。

可考虑的其他可能性包括:

  • 网络或虚拟网络配置错误导致网络数据包到达错误位置或被丢弃的可能性。
  • 硬件错误或“电缆脱落”的可能性或...

话虽如此,根据当前(2023)的StackOverflow标准,这个问题是离题的。您应该询问有关联网和在ServerFault上诊断网络错误的问题。这不是编程问题。
下面是关于ServerFault的一个相关问题:

相关问题