稳扎稳打Silverlight(55) - 4.0通信之对UDP协议的支持:“源特定多播”
2010-10-12 12:29:58 来源:WEB开发网介绍
Silverlight 4.0 对 UDP 协议的支持:
* UdpSingleSourceMulticastClient - 一个从单一源接收多播信息的客户端,即 SSM 客户端
在线DEMO
http://www.cnblogs.com/webabcd/archive/2010/08/09/1795417.html
示例
演示如何通过 UdpSingleSourceMulticastClient 实现 SSM
1、服务端
Form1.cs
代码
// 启动用于演示 SSM 的 Socket 服务(基于 UDP 协议)
private void LaunchSocketUdp()
{
// 服务端的 IPEndPoint
IPEndPoint serverPoint = new IPEndPoint(IPAddress.Any, 3004);
// 广播地址的 IPEndPoint(255.255.255.255)
IPEndPoint broadcastPoint = new IPEndPoint(IPAddress.Broadcast, 3003);
// 根据服务端的 IPEndPoint 创建服务端的 UDP 对象
UdpClient serverUdp = new UdpClient(serverPoint);
ShowMessage("演示 SSM 的 Socket 服务已启动(基于 UDP 协议)");
// 每 3 表广播一次
var timer = new System.Timers.Timer();
timer.Interval = 3000d;
timer.Elapsed += delegate
{
string msg = string.Format("{0}: {1} - [{2}]", Dns.GetHostName(), "广播内容", DateTime.Now.ToString("HH:mm:ss"));
byte[] data = Encoding.UTF8.GetBytes(msg);
// 发送广播(分别需要指定:广播内容;广播内容的字节数;广播地址的 IPEndPoint)
serverUdp.Send(data, data.Length, broadcastPoint);
};
timer.Start();
// 接收客户端发过来的信息
var thread = new System.Threading.Thread(() =>
{
while (true)
{
IPEndPoint clientPoint = null;
// 接收客户端传来的信息,并获取客户端的 IPEndPoint
byte[] receivedBytes = serverUdp.Receive(ref clientPoint);
string receivedData = Encoding.UTF8.GetString(receivedBytes);
string message = string.Format("{0} - 来自:{1}", receivedData, clientPoint.ToString());
_syncContext.Post(delegate { ShowMessage(message); }, null);
}
});
thread.Start();
}
// 启动多播的安全策略服务
private void LaunchMulticastPolicyServer()
{
/*
* Silverlight 程序加入多播组之前,会通过 UDP 端口 9430 发送初始消息到多播组,然后服务端返回相应的安全策略(详见文档)
* 为了方便下发安全策略,可以引用 Microsoft.Silverlight.PolicyServers.dll 程序集,其封装了相关的方法
*/
// 本例的安全策略配置结果为:授权通过 UDP 端口 3003 问多播组 224.0.0.1,授权通过 UDP 端口 3006 问多播组 224.0.0.1
MulticastPolicyConfiguration config = new MulticastPolicyConfiguration();
config.SingleSourceConfiguration.Add("*", new MulticastResource(IPAddress.Parse("224.0.0.1"), 3003)); // 配置 SSM 的安全策略
MulticastPolicyServer server = new MulticastPolicyServer(config);
server.Start();
ShowMessage("多播的安全策略服务已启动");
}
Tags:稳扎稳打 Silverlight 通信
编辑录入:爽爽 [复制链接] [打 印]- ››稳扎稳打Silverlight(53) - 4.0通信之对WCF NetTc...
- ››稳扎稳打Silverlight(54) - 4.0通信之对UDP协议的...
- ››稳扎稳打Silverlight(55) - 4.0通信之对UDP协议的...
- ››稳扎稳打Silverlight(56) - 4.0通信之与 WCF Data...
- ››Silverlight for Windows Phone 7开发系列(1):...
- ››Silverlight for Windows Phone 7开发系列(2):...
- ››Silverlight for Windows Phone 7开发系列(3):...
- ››Silverlight for Windows Phone 7开发系列(4):...
- ››Silverlight for Symbian
- ››Silverlight3系列(四)数据绑定 Data Binding 1
- ››稳扎稳打Silverlight 2.0 系列文章索引
- ››稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie...
更多精彩
赞助商链接