Не удается создать сокет: java.net.ConnectException:Отказано в подключении:Контакты
-
26-10-2019 - |
Вопрос
Я собираюсь создать сокет и получить 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