Java Socket не может подключиться к собственному компьютеру - PullRequest
1 голос
/ 09 февраля 2011

Моя программа работает нормально, когда я

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

Но когда я заменяю localhost своим собственным внешним IP-адресом, он терпит неудачу Что дает?Он немедленно генерирует UnknownHostException, хотя я могу нормально пропинговать свой внешний 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)

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Что дает? Это бросает UnknownHostException сразу, даже хотя я могу пинговать свой внешний IP просто хорошо. Трассировка стека:

Я не вижу UnknownHostException в вашей трассировке стека. «Удаленная» сторона активно отказывается от соединения. Может быть из-за брандмауэра, но маловероятно, поскольку брандмауэры обычно молча отбрасывают пакеты вместо того, чтобы активно отказываться. Скорее всего, серверное приложение просто не слушает внешний интерфейс. Большинство серверных программ ведут себя так же в конфигурации по умолчанию из соображений безопасности. Проверьте, что вывод команды netstat -n -a.

0 голосов
/ 09 февраля 2011

Если это ваш внешний IP, вам нужно открыть / перенести порт 100000

...