Я не уверен, как лучше всего приблизиться к моей проблеме. У меня есть сервис с, работает на удаленной машине с, получает и процесс пакеты UDP. Я хочу, чтобы сервис смог снова послать эти пакеты любому, который, оказывается, хочет их (мог быть никто, обычно будет одна машина, но может быть больше),
Я полагал, что Многоадресная передача UDP будет идеальна - сервис может отправить к группе многоадресной передачи, и не имеет значения, сколько получателей зарегистрировалось, или даже если нет ни одного.
Однако я хочу смочь получить доступ к этому по Интернету и от того, что я заключаю, что это почти - на невозможном с Многоадресной передачей UDP. Есть ли другой метод, который я мог бы использовать для достижения этого?
При необходимости и мой клиент и сервис записаны в C#.
Как правило, это невозможно, поскольку многоадресные пакеты не маршрутизируются.
Есть несколько способов обойти это (DVMRP, MOSPF и другие), но все они требуют, чтобы вы могли настроить все маршрутизаторы между вашим сервером и клиентами (или создать туннель). Существуют магистральные сети (Abilene, Mbone) с поддержкой многоадресной рассылки, но они представляют наибольший интерес для университетов и т.п. Интернет обычного потребителя не имеет многоадресной рассылки.
К сожалению, вам нужна прямая связь. Но вы находитесь в хорошей компании, Интернет, радио и телевидение работают в двухточечной сети, передавая одни и те же данные много раз. Довольно пустая трата полосы пропускания.
Предпочтительным методом является использование оверлейной многоадресной рассылки, т.е. использование TCP связей между пирами и реализация семантики многоадресной рассылки поверх этого.
Многие маршрутизаторы IPv4 не поддерживают многоадресную рассылку или отключили ее, IPv6 обязан поддерживать многоадресную рассылку, а семантика широковещания была удалена.