DY SmartNet能让软件开发人员快速开发基于Silverlight4\5的网络通信软件的项目.它使用WCF.TCP为通信基础,可以快速开发网络游戏,网络即时通信系统.

下载页面:http://smartnet.codeplex.com/releases

项目优势:
1.基于silverlight开发的各种网络游戏或网络应用高性能通信
2.集成跨域服务
3.集成用户验证功能

使用注意事项:

关于服务端使用:
1.项目属性的目标.NET Framework版本必须是4.0,不可以使用profile版本。

关于客户端使用:
1.项目必须引用以下组件
System.ServiceModel.dll
System.ServiceModel.Extensions.dll
System.ServiceModel.NetTcp.dll

关于本项目的授权说明:
- 没有任何功能或时间限制
- 任何公司或个人均可自由复制发布

本项目最终版权说明及权利由 黎东海 所有
项目负责人:黎东海 网名:内Cool超人
个人网站:http://weibo.com/funsl
微软认证技术专家(MCTS)NO:6110199
微软最有价值专家(MVP)NO:4033529

快速上手:
1.服务器端代码
 class Program
    {
        //定义DY SmartNet组件
        static DYNet con;
        static void Main(string[] args)
        {
            //实例化DY SmartNet/参数为true服务器端自动与所有客户端永久连接
            con = new DYNet(true);
            //启动服务功能
            //参数1:是否启动跨域服务
            //参数2:服务端口号
            con.StartServer(true, 4504);
            //注册客户端连接事件
            DYNet.OnConnectEvent += new OnConnectDelegate(DYNet_OnConnectEvent);
            //注册客户端发送消息事件
            DYNet.OnDataEvent +=new OnDataDelegate(DYNet_OnDataEvent);
            //注册客户端意外断开事件
            DYNet.ClientExitEvent +=new ClientExitDelegate(DYNet_ClientExitEvent);

            Console.WriteLine("ok");
            Console.Read();
        }
        static void DYNet_OnConnectEvent(byte[] UserToken, DYtoken CurrentClient, string UserName, string Pwd)
        {
            //检查新连接用户名和密码是否合法
            if (UserName.Equals("用户名") && Pwd.Equals("密码"))
            {
                //添加新连接用户到广播集合
                if (con.AddClient(CurrentClient) == AddResult.Added)
                {
                    //标记新连接用户合法登陆
                    CurrentClient.IsLogined = true;
                    //回送上下文
                    con.ConnectReCall(Encoding.UTF8.GetBytes("login ok"), CurrentClient);
                }
            }
        }
        static void DYNet_OnDataEvent(byte[] data, DYtoken CurrentClient)
        {
            //过滤未经登陆的非法用户连接
            if (CurrentClient.IsLogined)
            {
                //向所有已连接用户广播内容
                con.SendToAll(data);
            }
            else
            {
                //终止当前非法用户
                CurrentClient.DisConnect();
            }
        }
        static void DYNet_ClientExitEvent(string SessionId)
        {
            //删除意外断网用户 
            con.DelClient(SessionId);
        }
    }

2.客户端代码
public partial class MainPage : UserControl
    {
        //定义DY SmartNet
        DYNet con;
        public MainPage()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(MainPage_Loaded);
            button1.Click += new RoutedEventHandler(button1_Click);
            button2.Click += new RoutedEventHandler(button2_Click);
        }
        void button2_Click(object sender, RoutedEventArgs e)
        {
            //连接到服务器
            con.ConnectToServer("用户名","密码", Encoding.UTF8.GetBytes("nothing"));
        }

        void button1_Click(object sender, RoutedEventArgs e)
        {
            //发送消息到服务器
            con.Send(Encoding.UTF8.GetBytes(textBox1.Text));
        }
        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            //实例化DY SmartNet
            con = new DYNet();
            //注册连接通知事件
            con.OnConnectEvent += new OnConnectDelegate(con_OnConnectEvent);
            //注册消息通知事件
            con.OnDataEvent += new OnDataDelegate(con_OnDataEvent);
            //启动连接到服务器端
            con.Connect(ServerIP: "localhost", port: 4504);
        }
        void con_OnConnectEvent(byte[] data)
        {
            display(data);
        }

        void con_OnDataEvent(byte[] data)
        {
            display(data);
        }

        //显示消息 
        void display(byte[] data)
        {
            listBox1.Items.Insert(0, Encoding.UTF8.GetString(data, 0, data.Length));
        }
    }

Last edited Nov 10 at 2:05 PM by jacle169, version 16