обработка очереди сообщений

Модератор: Модераторы разделов

Protocol
Сообщения: 34
ОС: Linux

обработка очереди сообщений

Сообщение Protocol »

приветсвую вас еще раз =)

у меня вопрос:

как можно создать очередь пакетов сообщений так, чтоб я смог обрабатывать каждый пакет отдельно?
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: обработка очереди сообщений

Сообщение BlackStar »

чо?
LightLang Team
Спасибо сказали:
Аватара пользователя
Reboot
Сообщения: 321
Статус: Красен глаз -- темна душа

Re: обработка очереди сообщений

Сообщение Reboot »

есть мнение, что это должно быть в этой теме Решено: connect ()
Мой компьютер зовут Марвин
Спасибо сказали:
Protocol
Сообщения: 34
ОС: Linux

Re: обработка очереди сообщений

Сообщение Protocol »

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

Reboot писал(а):
11.11.2009 18:40
есть мнение, что это должно быть в этой теме Решено: connect ()


не, это совсем другая тема.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: обработка очереди сообщений

Сообщение serzh-z »

Protocol писал(а):
11.11.2009 16:43
как можно создать очередь пакетов сообщений так, чтоб я смог обрабатывать каждый пакет отдельно?
См. stl::queue
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: обработка очереди сообщений

Сообщение RasenHerz »

Protocol писал(а):
11.11.2009 18:43
просто я слышал, что чтоб можно было обрабатывать каждый пакет в отдельности (для фильтрации, допустим) то необходимо какая-то очередь для этого, по-особенному созданная.

Reboot писал(а):
11.11.2009 18:40
есть мнение, что это должно быть в этой теме Решено: connect ()


не, это совсем другая тема.

Насколько я знаю ядро не имеет механизмов экспорта очередей пакетов в userspace. Обычному разработчику лишь предложено API для работы IP-фильтром и сырые сокеты (думаю особым образом извратившись можно организовать свою собственную очередь, но она будет далека от той что существует в ядре).
Спасибо сказали:
Protocol
Сообщения: 34
ОС: Linux

Re: обработка очереди сообщений

Сообщение Protocol »

но можно использовать функции recvfrom для обработки сообщений из очереди?
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: обработка очереди сообщений

Сообщение RasenHerz »

Protocol писал(а):
11.11.2009 20:37
но можно использовать функции recvfrom для обработки сообщений из очереди?

По-моему, вы не совсем понимаете что такое очереди пакетов. Почитайте об этом здесь. Еще раз повторюсь, userspace не работает напрямую с пакетами.
Спасибо сказали:
Аватара пользователя
кодировщик
Сообщения: 974
Статус: зарёган в пятницу 13
ОС: Linux

Re: обработка очереди сообщений

Сообщение кодировщик »

Protocol писал(а):
11.11.2009 20:37
но можно использовать функции recvfrom для обработки сообщений из очереди?

ssize_t bytes_read;
char data[4096];
............
sd = socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL));
.....................................
do
{
bytes_read = recvfrom(sd, data, sizeof(data), 0, 0, 0);
if ( bytes_read > 0 )
Функция обработки пакетов(data, bytes_read); //выбираешь, обрабатываешь пакеты любого типа
}
while ( bytes_read > 0 );
Спасибо сказали:
Protocol
Сообщения: 34
ОС: Linux

Re: обработка очереди сообщений

Сообщение Protocol »

RasenHerz писал(а):
11.11.2009 21:31
Protocol писал(а):
11.11.2009 20:37
но можно использовать функции recvfrom для обработки сообщений из очереди?

По-моему, вы не совсем понимаете что такое очереди пакетов. Почитайте об этом здесь. Еще раз повторюсь, userspace не работает напрямую с пакетами.


дак я понимаю что такое очередь, просто я не понимаю как ее образует линух и что она представляет собой в ядре.

если смотреть на вопрос системно, то вот: http://bse.sci-lib.com/article085995.html
Спасибо сказали: