![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| copoka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.4.2010 Репутация: нет Всего: нет |
Устанавливаю SocketConnection
первый раз при отправке на сервер запроса ответ приходит (на мобильный эмулятор) как положено второй запрос остается без ответа третий раз вылетает ругань "java.io.IOException: IOError 10053 during socket:: write \n" вот код класса который устанавливает соединение и обрабатывает все запросы
строка p = new HTTP(); записана в методе initialize() в чем может быть проблема??? Подозреваю что неправильно вызываются методы sc.openOutputStream(), sc.openInputStream() возможно где то должны стоять close, reset, flush но так как на Java только вторую неделю работую немогу их правильно раставит. Это сообщение отредактировал(а) copoka - 18.6.2010, 22:43 |
|||
|
||||
| copoka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.4.2010 Репутация: нет Всего: нет |
добавил после os.write("\r\n".getBytes()); строку os.flush();
и между внешним while (run) ... и внутренним while ((c = is.read()) != -1)... циклом добавил еще один
теперь второй ошибки "java.io.IOException: IOError 10053 during socket:: write \n" удалось избежать. Осталась первая. Ответ получаю только на первый запрос. На последующие (.!..)-ответа нет. Кто нибудь бывает на этом форуме? - сможет мне помочь? Добавлено через 3 минуты и 3 секунды с сервером точно все в порядке. Через Telnet на все запросы отвечает. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: нет Всего: 43 |
Использование одного сокетного соединения для нескольких последовательных запросов стало возможно только в версии http1.1, но и это не гарантируется. Если сервер закрывает соединение после обслуживания запроса, то клиент для следующего запроса должен создать новое сокетное соединение. Используйте HttpURLConnection. Там это делается автоматически.
|
|||
|
||||
| copoka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.4.2010 Репутация: нет Всего: нет |
1)
Я это уже понял. (Сегодня прочел "RFC 2068. Протокол передачи гипертекста -- HTTP/1.1". и провел серию дополнительных экспериментов через Telnet) 2) В таком случае (как я понимаю) размер переданных и полученных данных (около 10 байт) будут округлятся до min 1kb в зависимости от оператора. А прога отсылает запросы каждые 5-10 сек и время ее работы от 1 до 8 часов. Обсососу слишком жирно будет. Сейчас пробую написать сервер на python который будет держать соединение и перенаправлять запросы. PS По поводу второй части терзают сомнения. если это не так. поправьте меня чтоб я с python-ом не парился, а то J2Me и так уже мозг вынес, еще терь и python осваивать придется. Это сообщение отредактировал(а) copoka - 20.6.2010, 17:45 |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: нет Всего: 43 |
Если надо передавать поток по HTTP, т.е. последовательность коротких сообщений , то это реализуют через "бесконечный" запрос-ответ. Если поток от клиента к серверу, то "бесконечный" запрос POST. Если поток от сервера к клиенту, то "бесконечный" ответ.
|
|||
|
||||
| copoka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.4.2010 Репутация: нет Всего: нет |
||||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: нет Всего: 43 |
Для того, чтобы это четко означало, что концом передаваемых данных служит закрытие соединения, в хедере не должно быть параметра Content-Length. Если передающая сторона использует режим chunked (в http 1.1 обычно включается автоматически, если в OutputStream записано больше 1кб, т.е. больше одного пакета), то достаточно "никогда" не закрывать OutputStream. Если реализация для мобильного клиента, то возможно лучше это обсудить в разделе Java ME. |
|||
|
||||
| copoka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 2.4.2010 Репутация: нет Всего: нет |
Оказывается надо было в httpd.cfg параметр KeepAlive в On установить
и все работает COVD спасибо за помощь |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |