当我做
时,我的程序运行正常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)
答案 0 :(得分:1)
是什么给出的?它抛出一个 即使是UnknownHostException也是如此 虽然我可以ping我的外部IP 精细。堆栈跟踪:
我没有在堆栈跟踪中看到UnknownHostException。 “远程”端主动拒绝连接。可能是因为防火墙,但不太可能,因为防火墙通常会静默丢弃数据包而不是主动拒绝。很可能,服务器应用程序只是没有侦听外部接口。出于安全原因,大多数服务器软件的行为与默认配置中的相似。检查netstat -n -a
命令的输出。
答案 1 :(得分:0)
如果那是您的外部IP,则需要打开/移植前转100000