Как отправить многоадресное сообщение на пару партнеров в окнах C - PullRequest
2 голосов
/ 17 апреля 2011

Я пишу программу на C для Windows, которая должна отправлять сообщения нескольким узлам, каждый с разными IP и портом.нет необходимости гарантировать доставку сообщений.поэтому я хочу отправить многоадресное сообщение, не ограниченное той же локальной сетью, в которой я нахожусь.

Как мне это сделать?мне нужно отправлять каждое сообщение отдельно каждому из пиров, или есть возможность отправить его всем без итерации?

Нужно ли открывать сокетное соединение с каждым из пиров?

Спасибо, Майкл.

1 Ответ

0 голосов
/ 10 мая 2011

Есть два распространенных способа сделать это.

UDP Unicast

Вы поддерживаете список получателей IP-адресов в своей программе, перебирая каждый получатель и отправляя копию каждой дейтаграммы каждому получателю.

IP Multicast

Список получателей должен где-то существовать. Если вы используете IP Multicast, то список получателей поддерживается вашим сетевым оборудованием, обычно маршрутизатором или коммутатором уровня 3. Включите протокол управления группами Интернета (IGMP) на своем маршрутизаторе, и затем получатели могут отправлять запросы на присоединение IGMP к маршрутизатору, чтобы добавить себя в группу многоадресной рассылки. Многоадресная группа определяется как конечная точка IP - IP-адрес и порт. В IPv4 адреса с 224.0.0.0 по 239.255.255.255 обозначаются как многоадресные адреса. Чтобы отправить дейтаграмму всем членам группы многоадресной рассылки, достаточно отправить один раз дейтаграмму по UDP Unicast конечной точке группы многоадресной рассылки. Затем маршрутизатор направит дейтаграмму всем членам группы.

Если получатели не находятся в той же локальной сети, что и вы, вы, вероятно, не сможете использовать IP Multicast. IP Multicast будет работать только в том случае, если вы заранее знаете сетевой маршрут для всех получателей, которые могут присоединиться к вашей многоадресной группе, и убедитесь, что все сетевое оборудование настроено правильно.

Вы не можете использовать IP Multicast через Интернет.

...