![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Создаем сокет.
Создаем 2 потока: ввод и вывод. Далее мы можем писать в один и считывать из другого. В случае HTTP, к примеру, мы пишем в out и принимаем из in до тех пор, пока он не закроется. А если он не должен закрываться? Т.е. протокол не http, к примеру. А данные приходят не сразу все, а по кускам ) Придется при приеме анализировать данные(принимая по байту) и определять, сколько можно еще принять, прежде чем обработать и писать ответ? А если данные в формате XML, то придется ждать конца тега? Т.е. при приеме данных еще и парсить придется? |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
и ?
Если это был вопрос, то - да, придется. Это сообщение отредактировал(а) Alexandr87 - 31.1.2007, 07:56 |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Alexandr87, тогда вопрос 2:
Где найти библиотеку для работы с XML через сеть? Т.к. не верю, что это до меня не приходилось делать. Может кто-то уже сталкивался? |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
ПО-моему стандартные парсеры - работают с потоками (InputStream или другими), и соответственно, наверняка, можно скормить им напрямую потоки полученные с помощью Socket.getInputStream()
Добавлено @ 11:17 ЗЫ, кстати есть статья в факуале http://vingrad.ru/JAVA-JAV-003029 |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Приходит в него по тегу. И на некоторые моменты времени может быть такое, что он оборван... типа <mytag val="bla Сможет ли с этим работать парсер? |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
Думаю да, попробуй.
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Да. Поток чтения будет заблокирован, и парсер соответсвенно тоже. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
LSD, хм... т.е. этот парсер я должен буду пустить в отдельный поток, чтобы иметь возможность писать в out по мере приходы мне данных?
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Нет, у тебя будет один поток, он читает данные из сокета, парсит их, и как распарсит выдает в out.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Не все так просто.... Т.е. он не прекратит читать данные из сокета, пока сокет не закроется? Или он передает мне управление, когда он прочитает 1 тег? Но мне по мере того, как он читает, надо будет отправлять ему данные. Причем не как ответ на пришедшие, а в произвольный промежуток времени. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Если ты будешь делать так как описано в FAQ, то ты создаешь свой обработчик SAX, затем запускаешь SAX парсер парсить данные из потока. После того как SAX парсер найдет структурный элемент, он вызывает твой обработчик, после того как обработчик отработает он продолжает парсинг.
Все это происходит в одном потоке. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Угу, спасибо, понял: парсер(получая данные из in) прерывается только чтобы передать параметр в обработчик.
Значит, чтобы отправлять данные в out, мне нужно заводить отдельный поток. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |