Невозможно создать сокет:java.net.ConnectException: соединение отказано: соединение
Я собираюсь создать сокет и получить 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 и номер порта. Как я могу решить эту проблему? Где я не прав и что?
2 ответа
Ошибка "отказано в соединении" означает, что стек сокетов на серверном компьютере получил ваш запрос на соединение и намеренно отказался принять его. Это происходит по одной из двух возможных причин:
1) на порте, к которому вы пытаетесь подключиться, не работает прослушивающий сокет.
2) имеется сокет прослушивания, но его незавершенное соединение с ожидающими соединениями заполнено, поэтому в данный момент нет места для очереди вашего запроса.
Чтобы провести различие между ними, попробуйте подключиться несколько раз с задержкой между каждой попыткой. Если вы постоянно получаете одну и ту же ошибку, вероятно, виновником является № 1. Убедитесь, что номер порта правильный. Если виновником является №2, у вашего реконнекта есть шанс на успех.
Отказ в соединении означает, что вы пытаетесь подключиться к серверу, который не прослушивает этот порт или слишком загружен, чтобы принять соединение.
Простой способ проверить это - попробовать
telnet 111.111.111.111 4040