QNX.ORG.RU

Разработка => Программирование под UNIX => Тема начата: oder от Ноября 07, 2012, 11:21:44 am



Название: Multicact
Отправлено: oder от Ноября 07, 2012, 11:21:44 am
Привет.

Может, кто-то знает, чтоб я не искал по манах...
Если есть малтикаст-группа и клиент к ней присоединяется, я так понимаю, создатель группы его у себя в списке где-то отмечает, чтоб ему, вместе с остальными, адресовать малтикасты. Если создателя группы убить и перезапустить - список подписчиков, очевидно, очистится. Как клиент должен знать, что ему нужно наново к группе подсоединяться? Только по таймауту?


Название: Re: Multicact
Отправлено: darkelf от Ноября 07, 2012, 11:35:32 am
Если на низком уровне, насколько я помню, то на карточке разрешается принимать и для указанного группового адреса тоже, плюс в сеть шлётся IGMP пакет - что-бы и вышестоящее сетевое оборудование тоже пропускало такие пакеты дальше. Для закрытия сокета выполняются аналогичные действия - на карточке закрывается приём (а скорее всего уменьшается счётчик для такого адреса, и если счётчик равен 0, то закрывается для него приём), плюс  в сеть  выдаётся другой IGMP пакет для вышестоящего сетевого оборудования. Таким образом, если я не ошибаюсь, создатель группы у себя никаких списков не ведёт.


Название: Re: Multicact
Отправлено: AshKhan от Ноября 07, 2012, 12:29:20 pm
При работе обмена в режиме мультикаст, соединение сокета выдачи и приема не создается - это ведь UDP приблуда. То есть, для отправки сообщений на групповой сокет используется простой sendto, где указывается IP-адрес получателя. Соответственно, выдача возможна всегда. Прием простым read из сокета группы. Тут другие заморочки возможны. Например, выдача по групповому адресу осуществялется только с одного интерфейса (по-умолчанию самый первый в системе), и для того, чтобы выдать в другой, потребуется руками переключить этот интерфейс. Еще что-то там с роутингом нужно делать.


Название: Re: Multicact
Отправлено: oder от Ноября 07, 2012, 04:09:05 pm
Фокус в том, что мультикаст тем отличается от броадкаста, что если из сети есть несколько выходов, он идёт (он вообще идёт!) только в те выходы, за которыми есть клиенты. Вы же представляете, что бывают малтикаст сервера в Интернете, которые вещают на весь мир? Так вот, эта информация о клиентах должна где-то храниться. А уж какой функцией отправлять - это я знаю.


Название: Re: Multicact
Отправлено: oder от Ноября 07, 2012, 04:19:59 pm
to darkelf: Спасибо. Буду пробовать.


Название: Re: Multicact
Отправлено: mike от Ноября 08, 2012, 12:42:28 pm
нет никаких списков, сервер тупо плюёт данные в мультикаст группу, клиент тупо слушает
Фокус в том, что мультикаст тем отличается от броадкаста, что если из сети есть несколько выходов, он идёт (он вообще идёт!) только в те выходы, за которыми есть клиенты.
повторите тот-же фокус с хабом или тупым свичём, не получится, это возможно только на умных свичах используя протокол IGMP, но это относится к коммуникационному оборудованию, а не как не к хосту
Вы же представляете, что бывают малтикаст сервера в Интернете, которые вещают на весь мир? Так вот, эта информация о клиентах должна где-то храниться. А уж какой функцией отправлять - это я знаю.
маршрутизация мультикаста это отдельная песня, там уже за это отвечает протокол PIM