Постоянное подключение к серверу через сокет, пока не будет установлено соединение - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть клиент, которому я хочу пытаться непрерывно подключаться к серверу до тех пор, пока соединение не будет установлено (т.е. пока я не запускаю сервер).

clientSocket = new Socket();
while (!clientSocket.isConnected()) {
    try {
        clientSocket.connect(new InetSocketAddress(serverAddress, serverPort));
    } catch (IOException e) {
        e.printStackTrace();
    }

    // sleep prevents a billion SocketExceptions from being printed,
    // and hopefully stops the server from thinking it's getting DOS'd
    try {
        Thread.sleep(1500);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

После первой попытки я получаю ConnectionException;ожидается, так как не к чему подключаться.После этого, однако, я начинаю получать SocketException: Socket closed, что не имеет смысла для меня, поскольку clientSocket.isClosed() всегда возвращает false, до и после вызова connect().

Как мне изменить свой код, чтобы получитьфункциональность мне нужна?

1 Ответ

0 голосов
/ 25 апреля 2018

Невозможно восстановить соединение Socket, даже если попытка подключения не удалась. Вы должны закрыть его и создать новый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...