(Сокеты) В Java-программе команды pop3 получают только одно сообщение

1

Я написал java-программу без пакета javax.mail. Чтобы подключиться к моей учетной записи Gmail, я использую socket. Чтобы получить мои сообщения, я использую цикл for.

 for(int i=1; i<=NumOfMsg; i++){
   output.println("RETR "+i);
   do{
        answer = response();
        System.out.println(answer);
    } 
    while (true);   

ответ - метод, который выглядит так:

String response() throws IOException {

   response = input.readLine();
   if(response == null) 
   return null;
   else
   return answer;
}

Когда эта программа ведется, она возвращает только первую букву. После этого программа не будет повторять цикл. Курсор мигает, и я не могу понять, что он ждет другого входа, который висит. Если я оставлю программу на 5 минут, она начнет вечный цикл и печатает нуль.

Любые предложения помогут.

  • 1
    Отладить это? Опубликовать полную программу?
  • 0
    IOException или RuntimeException бросили?
Показать ещё 4 комментария
Теги:
sockets
pop3

1 ответ

0

Ваша логика неверна. Вы назначаете ответ на первый результат из response(), а затем никогда не обновляете его, если только ответ не равен нулю.

Если вы хотите построить ответ из ответа, у вас должен быть цикл, который добавляет ответ на переменную ответа.

for(int i = 1; i <= NumOfMsg; ++i){
   output.println("RETR " + i);
   do {
       answer = response();
       System.out.println(answer);
   }
   while (true);
}

String response() throws IOException {
   response = input.readLine();
   return response == null ? answer : answer + response;
}
  • 0
    Ух ты, я не видел, чтобы это было 6 месяцев, когда отвечал ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню