У меня в сети есть многоадресный IPTV. Все каналы имеют адреса мутирования, такие как 239.0.1. *. Streamer устройство отправляет UDP данные в порт назначения 1234. Таким образом, чтобы получить поток ТВ я обычные вещи, как:Erlang: получать несколько многоадресных потоков на одном и том же порту
{ok, S} = gen_udp:open(1234, ....
inet:setopts(S, [{add_membership, {{239,0,1,2}, {0,0,0,0}}}]),
Он работает.
Теперь я хочу подписаться на несколько каналов, чтобы получать несколько потоков одновременно. Так что я еще один вызов:
inet:setopts(S, [{add_membership, {{239,0,1,3}, {0,0,0,0}}}]),
Это тоже работает. Я вижу оба потока в Вирешарке. Я могу различать их по IP-адресам назначения - 239.0.1.2 и 239.0.1.3.
НО.
В Erlang я не могу понять, канал, к которому принадлежит входящий пакет, привести к потере данных UDP поступает в виде сообщений:
{udp, Socket, IP, PortNo, Packet},
где IP и PortNo является исходный адрес (10.33.33.32 в моем случае) и порт (49152).
Итак, вопрос в том, как определить IP-адрес назначения входящего пакета многоадресной передачи UPD.
Windows 7, Erlang 5.9/OTP R15B.
Спасибо!
Если вы не получили ответа, вы можете попросить об этом на erlang-questions. –
Читайте это: http://stackoverflow.com/questions/1746257/how-to-send-multicast-messages-and-reuse-a-port-in-erlang – Ricardo
Рикардо, сначала я думал, что вы разместите ссылку на пункт я к ответу. Но теперь, я думаю, вы хотели, чтобы я дал вам совет. К сожалению, я не могу вам помочь. – 3DFace