Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.11.2013, 12:24
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 11  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от PainKiller Посмотреть сообщение
Почему обязательно сокет-сервер? Можно сделать простой http сервлет, который в ответ на запрос будет отдавать эксемельник
Ох как серьезно задача-то упростилась )

[КЭП]его сделать ни чуть не проще, чем сокет сервер[/КЭП]

Старый 08.11.2013, 15:12
Ресмус вне форума Посмотреть профиль Отправить личное сообщение для Ресмус Найти все сообщения от Ресмус
  № 12  
Ответить с цитированием
Ресмус

Регистрация: Sep 2013
Сообщений: 12
Цитата:
Сообщение от caseyryan Посмотреть сообщение
....Сразу скажу, что эта задача на джаве не решается в 5 - 10 строк, и даже в 100....
В таком случае, вы должны понимать мои затруднения. Тем более, когда пытаешься разобраться во всем сам. К сожалению, найти какой-нибудь мануал который покажет именно то, что тебе нужно, да и всё объяснит — весьма нелегко, а то и невозможно.


Вот моя реализация сервера:
- Для чтения данных из сокетов использую InputStreamReader + BufferedReader;
- Далее, данные из буфера передаю в стороковую переменную (метод readLine());
- Создаю Document в который считываю байты и парсю эту самую строковую переменную;
- В переменную типа Element извлекаю из документа элемент;
- Потом, к примеру, могу у элемента извлечь название тэга методом getTagName(); что уже позволит мне передать элемент в нужную цепочку к дальнейшей обработке (извлечения значений атрибутов).


Добавлю, что передаваемый xml файл очень простой, предположительно всего один тэг с атрибутами.
Тэг служит пунктом назначения (то есть в какую цепочку отправить), а атрибуты уже содержат данные необходимые для обработки.

Следственно... Конкретизируя мой вопрос:
- Правильные ли я выбрал стримы-ридеры? Если нет, то какие лучше и почему? (я немного запутался в этом вопросе)
- Приемлемый ли выбор принимать данные в строку, а потом преобразоть её в документ? Есть ли возможность передавать данные сразу в документ (соответственно отпарсив); быстрее ли будет обработка данных?
- Всё-таки, DOM или SAX? (хотя лично, SAX ещё не пробовал).

- Эффективный ли данный метод в общем(для данной задачи), да в эффективности обработки данных и простоте реализации в частности? Или есть лучше? Почему? Как правильно реализовать?


P.S.: на джава-талке так никто и не ответил.

Старый 09.11.2013, 19:37
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 13  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Цитата:
Ох как серьезно задача-то упростилась )
Я не пробовал написать сокет-сервер на яве, но моих скромных познаний в яве хватило чтобы поставить томкет и написать написать первый сервлет в течении полутора часов. Это упрощает задачу уже хотя бы потому что проще с безопасностью, не будет серькюрити эррор. Но все зависит от задачи, если нужно возвращать не сложный хмл то это быстро реализует даже новичок, если там нужно воротить что то серьезное, то это совсем другое дело.

Ресмус
Если с англ. все ок, то я рекомендую Basham B., Sierra K., Bates B . - Head First Servlets and JSP (2nd Edition) (A Brain-Friendly Guide) - 2008 шикарная книга, просто и с юмором написана, я её сейчас читаю, и реально быстро начинаешь делать сложные серверные вещи. А если с англ. напряг то попробуй на javabegin.ru, там есть платные курсы по вебяве. А иначе никак писать явакод не научишся, учиться надо полюбому :-)

Цитата:
- Правильные ли я выбрал стримы-ридеры? Если нет, то какие лучше и почему? (я немного запутался в этом вопросе)
эти то работают? С клиента данные идут? Это все проверяется на практике
SAX я тоже не пробовал, ничего сказать не могу.

Старый 11.11.2013, 12:41
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 14  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Не доводилось использовать XMLSocket, но если он работает по тому же принципу, что и Socket, то использование сервлета в качестве серверного решения не кажется верным. Сервлеты работают по принципу "запрос-ответ", логичнее было бы использовать URLLoader и на сервере - какой-то фреймворк для реализации REST API, построенный на сервлетах(в целях экономии времени, хотя никто не запрещает создать свою реализацию серверного API). Либо использовать ServerSocket на серверной стороне и работать в режиме постоянного подключения, если это требуется спецификой приложения, конечно. Да, в таком случае желательно использовать не XML(порядочное количество избыточных данных), а, скажем, AMF - он понятен Flash-у, и существуют готовые решения на Java для декодировании и сериализации. Например, можно использовать BlazeDS(нужны библиотеки flex-messaging-common.jar и flex-messaging-core.jar). Читаем:
Код:
Amf3Input in = new Amf3Input(SerializationContext.getSerializationContext());
in.setInputStream(clientSocket.getInputStream());
Object message = in.readObject();
Пишем:
Код:
AmfObject message = new AmfObject();
Amf3Output out = new Amf3Output(SerializationContext.getSerializationContext());
out.setOutputStream(clientSocket.getOutputStream());
out.writeObject(message);
out.writeObjectEnd();
out.flush();
В клиенте читаем данные при помощи socket.readObject()...есть еще проблема с буферизацией больших сообщений, но до неё еще добраться нужно, решается чтением в промежуточный ByteArray для буферизации собщений. Ну и еще нужно создать класс-модель для сериализации.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:36.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.