FerdouZ Ответов: 0

Попробуйте поймать несколько попыток в клиентской программе сокета на java.


Я пытаюсь сделать 3 попытки со стороны клиента, когда сервер не работает. После трех попыток он выйдет из программы. Что бы я ни пробовал, это работает, но в течение одного раза. при запуске программы она автоматически делает 3 попытки, но я хочу отдельно, как один раз, когда она потеряет одну попытку.
Спасибо

Что я уже пробовал:

int attempt =3;
while(true) 
{
    try {
        Reconnect();
        text1.append("Successfully connected \n");
        textField1.setText("Connected");
        textField1.setBackground(Color.GREEN);
        break;
    } 
    catch (IOException e1) {
        attempt--;
        text1.append("you have left "+attempt+" attempt \n Try again\n");
    }
    if(attempt==0) {
        SendMailBySite();
        break;
    }
}
    
private void Reconnect() throws UnknownHostException, IOException {
    String hostName = "127.0.0.1";
    int portNumber = Integer.parseInt("5058");
    Socket socket = new Socket(hostName,portNumber);
}

Richard MacCutchan

Вам нужно запустить блок try/catch внутри повторяющегося цикла.

FerdouZ

Я уже пытался. Это не работает.

Richard MacCutchan

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

FerdouZ

Я обновляю свой код. В соответствии с вашим решением я поместил блок try/catch внутри цикла. Теперь, когда я запускаю эту программу, она запускает все попытки вместе, но я хочу, чтобы одна попытка была сделана один раз, как попытка входа в систему.Итак, после трех попыток он выйдет.На самом деле я делаю в java swing Gui. Надеюсь, вы поймете. Если что-нибудь, пожалуйста, спросите в комментарии. Спасибо

Richard MacCutchan

Теперь я исправил отступ в вашем коде, его немного легче читать. Вы правильно уменьшаете счетчик попыток в своем блоке catch. Однако в конце цикла, если счетчик попыток равен нулю, вы не выходите.

0 Ответов