Модераторы: feodorv

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прочитать все данные из сокета, как? 
V
    Опции темы
azesmcar
Дата 20.3.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата

К сожалению, оптимизировать работу модулей стека - это не наша задача!
Они написаны и работают так, как написано в RFC.
Честно говоря, они справляются и пока мы не жалуемся - чему свидетельство и эти диалоги.


я говорил не о работе стека, а о том чтобы не читать по нескольку раз.

Цитата

Это не оправдание smile

Я никогда и ни перед кем не оправдываюсь..
Цитата

Тебе нужно прочитать сообщение или содержимое внутреннего буфера сокета ?

а в содержимом внутреннего буфера сокет что если не сообщение?
Цитата

тебе все равно придется как-то буферизовать поток и дробить его на сообщения на прикладном уровне.

я не утверждал обратного, но "как-то" может быть быстро и медленно. Мне желательно сделать быстро..во всяком случае насколько это возможно.

PM   Вверх
vinick
Дата 20.3.2009, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 6
Всего: 22



Цитата(azesmcar @  20.3.2009,  18:28 Найти цитируемый пост)
а в содержимом внутреннего буфера сокет что если не сообщение?

Там может быть 1 сообщение, 10 сообщений,  половина сообщения, конец первого сообщения и начало второго. в общем там может быть что угодно.

Цитата(azesmcar @  20.3.2009,  18:28 Найти цитируемый пост)
Мне желательно сделать быстро..во всяком случае насколько это возможно.

Если у тебя не InfiniBand, то скорость передачи по сети на порядки будет отставать от самого медленного метода извлечения сообщения из сокета. Так что особый фанатизм в такой оптимизации  ИМХО излишен.

Попробуй, добавлять перед сообщением его длинну. Пара-тройка байт  особой погоды в передаваемом объеме не сделают, а вытаскивать сообщения будет гораздо удобнее, да и быстрее, чем ловить маркер конца сообщения.
PM MAIL ICQ Jabber   Вверх
azesmcar
Дата 20.3.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата

Там может быть 1 сообщение, 10 сообщений,  половина сообщения, конец первого сообщения и начало второго. в общем там может быть что угодно.


мне все равно, они парсятся в очередь конкретных сообщений..

Цитата

Если у тебя не InfiniBand, то скорость передачи по сети на порядки будет отставать от самого медленного метода извлечения сообщения из сокета. Так что особый фанатизм в такой оптимизации  ИМХО излишен.

задержка на извлечении одного сообщения - задержит обработку, а следовательно и ответ на сообщение другого пользователя. Так что не совсем излишен. Правда речь не о фанатизме, если не найду другого способа, сделаю как знаю.
Цитата

Попробуй, добавлять перед сообщением его длинну. Пара-тройка байт  особой погоды в передаваемом объеме не сделают, а вытаскивать сообщения будет гораздо удобнее, да и быстрее, чем ловить маркер конца сообщения.


У меня так и сделано. Но если в заголовке написано что сообщение длиной в 30Кб, это не значит что я прочитаю их все. Я просто не хочу читать маленькими кусками. Уже написал класс для буфферизации сообщений..читаю сколько нужно, если в буффере недостаточно (recv вернул меньше чем нужно) жду следующего события. Как наберется - конвертирую в сообщение, передаю обработчику.

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.