Silverlight3中的scoket只支持tcp协议,而对于udp一直以安全原因拒绝支持,但在silverlight4中可以惊喜的发现 System.Net.Sockets下多出了二个类:

UdpAnySourceMulticastClient,UdpSingleSourceMulticastClient

根据msdn官方的解释:

​http://msdn.microsoft.com/en-us/library/system.net.sockets(VS.96).aspx​

UdpAnySourceMulticastClient :

A client receiver for multicast traffic from any source, also known as Any Source Multicast (ASM) or Internet Standard Multicast (ISM).

UdpSingleSourceMulticastClient:

A client receiver for multicast traffic from a single source, also known as Source Specific Multicast (SSM).

字面意义理解:UdpAnySourceMulticastClient允许客户端从任何源接收数据(即多对多),而UdpSingleSourceMulticastClient可以让客户端从单一源接收数据(即一对多)

知道这个能干什么了吗?

多人(视频)聊天室,单点(视频)广播

 

实现了一个简单的多对多文本聊天室,不过需要说明的是:出于安全考虑,silverlight中的udp仍然需要一个服务端用于处理策略文件请求。(这一点跟flash中的udp处理策略很相似,flash 10中的udp也需要先连接到一个Adobe Stratus服务器)

 

 

最后:文中所提示例代码测试了下,发现只能在同一个网段做udp收发,如果需要跨网段/跨防火墙传输,仍然需要自行额外处理。

 

作者:菩提树下的杨过