![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
Есть такая проблемка: при чтении данных с сокета иногда приходит целое сообщение, а иногда только часть его. В чем может быть проблема? код примерно такой:
Кстати, данная проблема возникает только если сообщение шлется с Windows-машины, с UNIX-машины подобных проблем не наблюдается. Это сообщение отредактировал(а) blur - 28.12.2007, 12:17 |
|||
|
||||
| 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. |
|||
|
||||
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
А как определить где кончается первое сообщение и начинается второе? |
|||
|
||||
| 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. |
|||
|
||||
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
Понятно, я думал что это может быть уже реализовано в джава-классах. Это сообщение отредактировал(а) blur - 28.12.2007, 13:17 |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
А это и реализовано. Используемый вами DataStream - это уровень байтов, самый низкий. А есть специализированные классы для чтения/записи строк или любых сериализуемых обьектов. Это сообщение отредактировал(а) COVD - 28.12.2007, 16:43 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Посмотри в сторону RMI, если у тебя и клиент и сервер на Java. -------------------- 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. |
|||
|
||||
| blur |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
А что это за классы? Может дадите примерчик? Я имею ввиду чтобы не нужно было отправлять сначала размер сообщения. Это сообщение отредактировал(а) blur - 2.1.2008, 10:39 |
||||
|
|||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
Это сообщение отредактировал(а) v2v - 2.1.2008, 11:06 |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
У меня завелась такая практика первые байты служебные: первый int тип сообщения, второй int длина сообщения. Удобно во многих отношениях.
Легко распознать, + если версии клиентов разные, то к примеру старый клиент может пропустить сообщения, которые он не понимает совершенно безболезненно, без танцев с бубном. |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
а я попробывал передать сообщения в виде ХМЛ строк.
очень даже не плохо получилося: немного избыточно, но зато всё красиво стандартизировано и прозрачно. (правда я не первый такое придумал, оказывается, протокол XMPP на котором работает Jabber полностью передаёт всю инфу между серверами и клиентами в виде ХМЛ). |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
Лично по мне, так что XML, что сериализация по сети - от лукавого!!! Я предпочитаю бинарный протокол.
|
|||
|
||||
| blur |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
Так если вы говорите, что это все реализовано в java-классах, то зачем городить свои протоколы, xml сюда прикручивать? |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 3 Всего: 40 |
не понял вопроса.
Добавлено через 54 секунды Лично я даже не заикался, что в java классх всё реализовано ^_^ К примеру по работе с AIM действительно, всё уже реализовано. joscar к примеру. |
|||
|
||||
| blur |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 9.11.2004 Репутация: нет Всего: 1 |
А что тут непонятного? Вопрос был такой:
Или пример (с BufferedReader), который привел v2v не обеспечивает этого? Это сообщение отредактировал(а) blur - 2.1.2008, 13:26 |
||||
|
|||||
![]()
|
| Правила форума "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. |