Отказ в соединении: соединение, сокет Java - PullRequest
0 голосов
/ 18 мая 2018

Я новичок в использовании Java-сокетаУ меня есть проблема, которую я не могу решить.У меня есть сервер с публичным IP-адресом, на нем выполняется Java-сервер, а затем у меня есть клиентское приложение для Android.С сокетом, который я получаю для связи от клиента к серверу, проблема возникает, когда я пытаюсь сделать это противоположным способом.Я попытался отправить подтверждающее сообщение с сервера клиенту.Неважно, сколько раз я пытаюсь, потому что у меня всегда появляется эта ошибка:

java.net.ConnectException: соединение отклонено: connect

at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at server.ServerEntrada.run(ServerEntrada.java:48)
at java.lang.Thread.run(Thread.java:748)

У меня есть порт маршрутизатора 9000 и9001 открыто.

Клиент отправляет через порт 9000 данные, а сервер получает их.Затем сервер отправляет их через порт 9001, в то время как приложение ожидает через

1 Ответ

0 голосов
/ 18 мая 2018
if(password.equals("asd")){
    System.out.println("Abriendo socket");
    socketSalida = new Socket(socketEntrada.getInetAddress().getHostAddress(),puertoSalida);
    DataOutputStream datosSalida = new DataOutputStream(socketSalida.getOutputStream());
    datosSalida.writeUTF("OK");
}

Проблема здесь.Ваш сервер пытается подключиться к вашему клиенту, но не может, так как ваш клиент - клиент, а не сервер.

И в этом нет необходимости.У него уже есть соединение с клиентом, с которого он прочитал пароль.Измените это на это:

if(password.equals("asd")){
    System.out.println("Abriendo socket");
    DataOutputStream datosSalida = new DataOutputStream(socketEntrada.getOutputStream());
    datosSalida.writeUTF("OK");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...