Не удается создать сокет: java.net.ConnectException:Отказано в подключении:Контакты

StackOverflow https://stackoverflow.com/questions/8815561

Вопрос

Я собираюсь создать сокет и получить InputStream.Вот как я это пробую.

try {
    final String serverIP = "111.111.111.111";
    final int serverPort = Integer.parseInt(server_port);
    final InetAddress serverAd=InetAddress.getByName(serverIP);
    final InetAddress localAd =InetAddress.getByName(local_ip);  
    final int localPort = 4040;

    Socket socket = new Socket(serverAd, serverPort, localAd, localPort);  
}  

Но возникает исключение,

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    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:276)
    at shootist.Porter.run(Porter.java:41)

Здесь сервер отправляет мне данные rtp, и серверная сторона в порядке и подтверждена.Я отправил приглашение и тоже получил 200.Если есть проблема с моим IP-адресом и портом, я думаю, что все ответы не могут быть доставлены на мой IP-адрес и указанные порты.Но этого не может произойти, так как сервер отправляет мне ответы на мой IP-адрес и указанный номер порта.Как я могу исправить эту проблему?Где я ошибаюсь и в чем?

Это было полезно?

Решение

Ошибка "отказано в подключении" означает, что стек сокетов на серверном компьютере получил ваш запрос на подключение и намеренно отказался его принять.Это происходит по одной из двух возможных причин:

1) на порту, к которому вы пытаетесь подключиться, нет прослушивающего сокета.

2) существует прослушивающий сокет, но его список ожидающих подключений заполнен, поэтому в данный момент нет места для постановки вашего запроса в очередь.

Чтобы отличить одно от другого, попробуйте переподключиться несколько раз с задержкой между каждой попыткой.Если вы постоянно получаете одну и ту же ошибку, то, скорее всего, виновником является # 1.Убедитесь, что номер порта указан правильно.Если виноват номер 2, у вашего повторного подключения есть шанс в конечном итоге увенчаться успехом.

Другие советы

Отказано подключение означает, что вы пытаетесь подключиться к серверу, который не прослушивает этот порт, или слишком отставан, чтобы принять соединение.

Простой способ проверить это - попробовать

 telnet 111.111.111.111 4040
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top