我的網絡中有一個基於組播的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。
謝謝!
如果你在這裏沒有得到答案,你可以考慮在erlang問題上提出這個問題。 – 2012-02-13 13:09:31
閱讀此:http://stackoverflow.com/questions/1746257/how-to-send-multicast-messages-and-reuse-a-port-in-erlang – Ricardo 2012-02-27 19:46:06
裏卡多,起初我想你發佈鏈接到點我回答。但現在我想你想讓我給你一個建議。不幸的是,我不能幫你。 – 3DFace 2012-03-16 22:54:20