【问题标题】:Java Socket Can't Connect to Own ComputerJava Socket 无法连接到自己的计算机
【发布时间】:2011-02-09 08:56:26
【问题描述】:

当我这样做时,我的程序运行良好

Socket s = new Socket("127.0.0.1", 10000);

但是当我用自己的外部 IP 地址替换 localhost 时,它会失败 是什么赋予了?它会立即引发 UnknownHostException,即使我可以很好地 ping 我的外部 IP。 堆栈跟踪:

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:529)
        at java.net.Socket.connect(Socket.java:478)
        at java.net.Socket.<init>(Socket.java:375)
        at java.net.Socket.<init>(Socket.java:189)
        at FileClient.main(FileClient.java:29)

【问题讨论】:

  • 能够 ping 它并不意味着盒子接受任意端口上的传入连接。也许它的防火墙阻止了它。
  • 那么,你到底把你的服务器绑定到哪里了?你可以把它绑定在127.0.0.1 上也一样好......

标签: java sockets networking ip


【解决方案1】:

什么给了?它抛出一个 UnknownHostException 立即,甚至 虽然我可以 ping 我的外部 IP 美好的。堆栈跟踪:

我在您的堆栈跟踪中没有看到 UnknownHostException。 “远程”端主动拒绝连接。可能是因为防火墙,但不太可能,因为防火墙通常会默默地丢弃数据包而不是主动拒绝。很可能,服务器应用程序只是没有在外部接口上侦听。由于安全原因,大多数服务器软件的行为与默认配置中的行为类似。检查netstat -n -a 命令的输出。

【讨论】:

  • 好的。事实证明它没有在端口上监听。
【解决方案2】:

如果那是您的外部 IP,您需要打开/端口转发 100000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2014-02-08
    相关资源
    最近更新 更多