![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| rob_an |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
Вопрос вроде бы простой но тк с ним сталкиваюсь первый раз не получается...
Суть такова: открываю соединение с POP3 сервером, создаю входящий is = sc.openInputStream(); и исход. os = sc.openOutputStream(); потоки и начинаю общение по POP протоколу. Вот подпорограмма чтения из потока:
Она работает, если сервер отвечает одной строкой. Если же ответ многострочный - то считывается только первая строка. ( это понятно, тк отловив "конец строки" (\n) - выходим из цикла. Но как прочитать ответ сервера из нескольких строк? Я думал, что можно отловить конец потока ( при считывании после конца - значение (-1) через исключения и вот этот код:
Но я вылетаю по InterruptedIOException и входной поток закрывается ( а не надо!) С исключениями сталкиваюсь первый раз, поэтому кому не трудно помогите - заранее спасибо! |
||||
|
|||||
| W0LF |
|
||||||||||||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Поставь считывание до определенного символа. Есть стандартный пример из WTK
Смотрим, что здесь происходит - считываем поток до символа "\n", или до конца потока(-1 то есть прерванное соединение). Записываем это в буфер. Далее проверяем - если
то выходим из общего цикла. Иначе, если мы просто дошли до определенного символа, которым закрываются наши пакеты(это может быть любой символ по договоренности клиента и сервера), то переходим снова к циклу -
И если сервер пока не посылает более пакетов, то останавливаемся на методе
и ждем, пока не прийдет пакет. Ну и так далее. А вместо "\n", можешь попробовать так например -
-------------------- iOS developer |
||||||||||||
|
|||||||||||||
| rob_an |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
Да, мысль с вечным циклом - это наверное единственно правильное решение, но тогда придется создавать еще один Трейд. Но надо еще подумать как из него передовать обратно в основную ветвь считанные строки ( считана может быть ведь и одна и несколько строк)???
|
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Я же пишу - возьми пример из WTK, там это все в отдельном потоке, все синхронизировано
-------------------- iOS developer |
|||
|
||||
| rob_an |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 20.12.2006 Репутация: нет Всего: нет |
Все получилось! Всем большое спасибо!
|
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |