2013-12-20 1 views
0

Я создаю свой собственный сервер, используя несколько протоколов: TCP-PULL ok, TCP-PUSH в порядке, UDP-PULL в порядке (но я не могу одновременно обслуживать двух клиентов!), UDP-PUSH в порядке (такая же проблема). Теперь мне нужно создать мой последний протокол: Multicast-PUSH, но я не могу понять, как он работает, и я действительно не знаю, как его кодировать на C++. Я читал о присоединении к группе, и в многоадресной рассылке нет связи, поэтому байты отправляются, даже если кто-либо подключен.Сервер многоадресной рассылки - MFC CSocket - C++ - Как это сделать?

Я кодирую на C++, используя библиотеки MFC и CSockets.

Может ли кто-нибудь помочь?

Thank's !!

ответ

1

Рассмотрим пример, когда одна система должна отправлять одну и ту же информацию в несколько систем. Как лучше всего это сделать? Очевидным подходом является наличие «соединения» сокета для каждой целевой системы. Когда данные готовы к отправке, отправитель выполняет итерацию по каждому «соединению», передавая данные в целевую систему. Этот процесс итерации должен происходить каждый раз, когда сообщение отправляется, и оно должно быть надежным, так что если сбой передачи для одной системы, он не прерывается для остальных систем. Но проблема действительно хуже, чем потому, что обычно все системы в многоадресном обмене, которые передают данные. Это означает, что каждая система должна иметь «соединение» с каждой системой, желающей принять участие.

Здесь многоадресной рассылки. В многоадресной передаче отправитель отправляет данные один раз на специализированный IP-адрес и порт, называемый группой многоадресной передачи. Оттуда сетевое оборудование, например, маршрутизаторы, позаботится о пересылке данных другим системам в группе многоадресной передачи. Для этого все системы, желающие участвовать в групповом обмене, должны «присоединиться» к группе многоадресной передачи, которая происходит во время инициализации сокета и используется для простого уведомления сетевого оборудования, которое система хочет принять участие в групповом обмене. Существует специальный диапазон адресов IPv4, используемых для многоадресной рассылки - от 224.0.0.0 до 239.255.255.255. Вы должны использовать IP-адрес в этом диапазоне и номер порта по вашему выбору для правильной работы многоадресной рассылки.

Обратитесь к Multicast Wrapper Class в CodeProject за примером, как это сделать в MFC.

+0

Утренний Мэтт! Спасибо, я сделал это, но у меня все еще есть одна небольшая проблема: я очень часто теряю связь, и я не знаю, почему –