我的网络中有一个基于组播的IPTV。 所有通道都有类似239.0.1。*的多点传送地址。 流光设备发送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}}}]),
它也可以。我在Wireshark中看到两个流。我可以通过目标IP地址 - 239.0.1.2和239.0.1.3来区分它们。
但是。
在Erlang中我不能找出一个信道以接收数据包所属其中,使UDP数据到达作为消息:
{udp, Socket, IP, PortNo, Packet},
其中IP和PORTNO是源地址(10.33.33.32在我的情况)和端口(49152)。
所以问题是 - 如何确定传入组播UPD数据包的目标IP地址。
Windows 7,Erlang 5.9/OTP R15B。
谢谢!
2012-02-13
3DFace
+0
如果你在这里没有得到答案,你可以考虑在erlang问题上提出这个问题。 –
2012-02-13 13:09:31
+0
阅读此:http://stackoverflow.com/questions/1746257/how-to-send-multicast-messages-and-reuse-a-port-in-erlang –
2012-02-27 19:46:06
+0
里卡多,起初我想你发布链接到点我回答。但现在我想你想让我给你一个建议。不幸的是,我不能帮你。 –
2012-03-16 22:54:20