最近需要一个Socket通讯的东西,但是这方面确实不太熟悉,写了一部分代码,始终不太理想,后来发现了SuperSocket 这个Socket框架,简单的看了下这个用来实现我的服务器部分简直太好不过。
SuperSocket 是一个轻量级,扩展性强的的服务器应用框架。
下载源码后,在/QuickStart/中可以一步步的学习SuperSocket
看了下简单示例,发现还是比较简单,于是依葫芦画瓢:
新建项目
SuperSocket.SocketBase.dll添加引用
添加引用log4net.dll引用
var appServer = new AppServer();
if (appServer.Setup("127.0.0.1", 8888))
{
Console.WriteLine("The server to setup.");
}
if (appServer.Start())
{
Console.WriteLine("The server started.");
}
Console.WriteLine(appServer.State);
Console.ReadKey();
运行结果
The server to setup.
The server started.
Running
//如果出现了 “请按任意键继续. . .”请检查是否在最后一行有 Console.ReadKey()
打开命令行窗口输入 telnet 127.0.0.18888 回车
可以正常连接到服务。
现在来处理两个事件
appServer.NewSessionConnected += appServer_NewSessionConnected;
appServer.NewRequestReceived += appServer_NewRequestReceived;
static void appServer_NewRequestReceived(AppSession session, SuperSocket.SocketBase.Protocol.StringRequestInfo requestInfo) {
Console.WriteLine(session.Config.Ip + " requested");
}
static void appServer_NewSessionConnected(AppSession session)
{
session.Send(string.Format("Hello {0}:{1}", session.Config.Ip, session.Config.Port));
}
运行结果:
下一次再研究一下它的Commond功能
PS:如果在运行成功服务且客户端提示连接失败时,先检查当前appServer有没有没回收,起初我就是没有在最后添加Console.ReadKey();一直不能连接。