服务器效果截图:
客户端效果截图:
1. 创建控制台项目,导入SuperSocket.Common、SuperSocket.SocketBase、SuperSocket.SocketEngine并添加好引用
2. 在控制台项目中添加Config文件夹及SuperSocket提供的log4net配置文件
3. 添加using引用
using SuperSocket.Common;
using SuperSocket.SocketBase;
using SuperSocket.SocketEngine;
using SuperSocket.SocketBase.Protocol;
4. Main方法添加代码:
var appServer = new AppServer();
//服务器端口
int port = 2000;
//设置服务监听端口
if (!appServer.Setup(port))
{
Console.WriteLine("端口设置失败!");
Console.ReadKey();
return;
}
//新连接事件
appServer.NewSessionConnected += new SessionHandler<AppSession>(NewSessionConnected);
//收到消息事件
appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(NewRequestReceived);
//连接断开事件
appServer.SessionClosed += new SessionHandler<AppSession, CloseReason>(SessionClosed);
//启动服务
if (!appServer.Start())
{
Console.WriteLine("启动服务失败!");
Console.ReadKey();
return;
}
Console.WriteLine("启动服务成功,输入exit退出!");
while (true)
{
var str = Console.ReadLine();
if (str.ToLower().Equals("exit"))
{
break;
}
}
Console.WriteLine();
//停止服务
appServer.Stop();
Console.WriteLine("服务已停止,按任意键退出!");
Console.ReadKey();
5. 添加事件对应方法
static void NewSessionConnected(AppSession session)
{
//向对应客户端发送数据
session.Send("Hello User!");
}
static void NewRequestReceived(AppSession session, StringRequestInfo requestInfo)
{
/**
* requestInfo为客户端发送的指令,默认为命令行协议
* 例:
* 发送 ping 127.0.0.1 -n 5
* requestInfo.Key: "ping"
* requestInfo.Body: "127.0.0.1 -n 5"
* requestInfo.Parameters: ["127.0.0.1","-n","5"]
**/
switch (requestInfo.Key.ToUpper())
{
case ("HELLO"):
session.Send("Hello World!");
break;
default:
session.Send("未知的指令。");
break;
}
}
static void SessionClosed(AppSession session, CloseReason reason)
{
}
6.备注:
(1).在SuperSocket.Base中,需要将引用中的log4net属性做如下修改:
(2).客户端可以使用 telnet 地址 端口连接: