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

问题描述 投票:0回答:1

我正在尝试确定网络上的设备是否正在运行 Web 服务器或不使用 Java。为此,我使用 Apache 的 HttpClient。我发送一个请求,如果设备运行网络服务器,我就会收到响应 - 非常简单。

但是,如果网络服务器没有运行,那么我观察到会发生两件事:

  • 请求将被忽略并发生超时
  • 将会抛出异常。特别是,它看起来像这样:

    org.apache.http.conn.HttpHostConnectException:连接到 192.168.12.133:80 [/192.168.12.133] 失败:连接被拒绝:连接

当我收到“连接被拒绝”异常与根本没有响应时,是否可以推断出有关我尝试连接的设备的任何信息?

编辑:

只是为了澄清:我正在做的是针对本地网络上的设备运行它。这意味着 NAS 盒、路由器、Windows 计算机、iPad 等。有些会有嵌入式 Web 服务器,有些则没有。大多数不会有防火墙。

我还 100% 确定该设备已启动并正在运行。

java network-programming apache-httpclient-4.x
1个回答
8
投票

你无法百分百确定地推断出任何事情,但是:

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

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

  • 网络或虚拟网络配置错误可能导致网络数据包发送到错误的位置或被丢弃。

  • 硬件错误或“电缆脱落”或......的可能性


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

这是关于 ServerFault 的相关问题:

© www.soinside.com 2019 - 2024. All rights reserved.