【问题标题】:Why connection to localhost is refused?为什么拒绝连接到本地主机?
【发布时间】:2011-11-05 08:58:26
【问题描述】:

我有一台服务器,客户端机器连接到该服务器。最近决定用stunnel加密连接,所以现在客户端程序不直接连接到服务器,而是连接到localhost:8045(我查了,这个端口没有被占用)。

Java 代码:

URL url = new URL("http://localhost:8045/malibu/GetProviders");
InputStream stream = url.openStream();

我得到以下信息:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at java.net.Socket.<init>(Socket.java:366)
    at java.net.Socket.<init>(Socket.java:180)
    . . .

如果我尝试使用curl 请求同一页面,一切都很好。

什么会导致这种行为?

编辑:是的,有一个监听套接字 - 运行 netstat -avn | grep 8045 给出:

tcp6       0      0 ::1:8045                :::*                    LISTEN

【问题讨论】:

  • 你有没有在 URL() 中尝试过 https://
  • @Dave:(1) stunnel 不是这样工作的。 (2) 错误明显是TCP级别的连接拒绝,而不是应用级别的协商错误。
  • 你能验证一下是否有一个监听套接字绑定到端口 8045?
  • @nIKUNJ - 结果相同 :(
  • @cdhowie - 是的。在帖子中添加了 netstat 输出。

标签: java url networking localhost stunnel


【解决方案1】:

我在 Windows 上安装了 Apache,并且还拒绝了 Java 的连接。但是调试连接和 Apache 日志显示,这实际上 不是连接问题。 Apache 返回错误 301,永久移动。然后它提供了一个重定向 url 到不存在的端口 8080。所以服务器配置有问题,可能是 ServerName 指令使用了错误的端口。 在请求的 URL 中添加斜杠可以解决问题。 wget 给出了对我来说最有用的调试输出。

the accepted answer 可能没有解释这个现象。记者本人在评论中承认,最后他用了一个带有斜线的url。

【讨论】:

    【解决方案2】:

    监听套接字绑定到 IPv6 环回地址 (::1)。我记得 Java 不正确支持双栈 IPv4/IPv6 系统的一些问题;大概就是这样。它仅连接到 127.0.0.1 (IPv4)。

    您尝试过的所有其他方法(curl、telnet...)都将首先尝试 IPv6 地址,如果失败则回退到 IPv4 地址。这就是为什么它们可以工作,而 Java 应用程序却不能。

    尝试强制 stunnel 绑定到 127.0.0.1。您也可以尝试让 Java 连接到 http://[::1]:8045/malibu/GetProviders,但我不记得它是否支持 HTTP URL 中的 IPv6 地址。

    【讨论】:

    • 是的!有效!我将 stunnel.conf 中的“accept”行更改为 127.0.0.1:8045,将 URL 更改为“127.0.0.1:8045/malibu”,一切似乎都很好。
    • 您是如何更改代码以使其工作的......也需要帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2023-01-19
    • 2013-07-08
    • 1970-01-01
    相关资源
    最近更新 更多