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));
}
}