WEB开发网
开发学院WEB开发ASP.NET 稳扎稳打Silverlight(55) - 4.0通信之对UDP协议的... 阅读

稳扎稳打Silverlight(55) - 4.0通信之对UDP协议的支持:“源特定多播”

 2010-10-12 12:29:58 来源:WEB开发网   
核心提示:介绍Silverlight 4.0 对 UDP 协议的支持:* UdpSingleSourceMulticastClient - 一个从单一源接收多播信息的客户端,即 SSM 客户端在线DEMOhttp://www.cnblogs.com/webabcd/archive/2010/08/09/1795417.html示

介绍

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("多播的安全策略服务已启动");
}

1 2 3 4  下一页

Tags:稳扎稳打 Silverlight 通信

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接