一个Telnet示例
- 创建一个控制台应用程序项目。 由于控制台应用程序项目的默认目标框架是Client Profile (.Net 3.5, .Net 4.0), 但SuperSocket需要使用完整的框架,所以当项目创建好之后,你要将项目的目标框架改成完整的框架。
- 添加SuperSocket的dll文件(SuperSocket.Common.dll, SuperSocket.SocketBase.dll, SuperSocket.SocketEngine.dll)到此项目的引用。
- 添加log4net.dll到项目引用。 如果是你使用默认的日志框架(log4net),此步骤是必须的。
- 引用SuperSocket提供的日志配置文件log4net.config到项目文件夹的"Config"文件夹然后设置它的Build Action 为 "Content",设置它的Copy to Output Directory 为 "Copy if newer",因为这个配置文件是log4net需要的
- 注册回话新建事件处理方法
- 在事件处理代码中发送欢迎信息给客户端
static void appServer_NewSessionConnected(AppSession session)
{
session.Send("Welcome to SuperSocket Telnet Server");
}
使用Telnet客户端进行测试
- open a telnet client
- type "telnet localhost 2012" ending with an "ENTER"
- you will get the message "Welcome to SuperSocket Telnet Server"
- 注册请求处理方法
- 实现请求处理
static void appServer_NewRequestReceived(AppSession session, StringRequestInfo requestInfo)
{
{
case("ECHO"):
session.Send(requestInfo.Body);
break;
case ("ADD"):
session.Send(requestInfo.Parameters.Select(p => Convert.ToInt32(p)).Sum().ToString());
break;
case ("MULT"):
var result = 1;
foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p)))
{
result *= factor;
}
session.Send(result.ToString());
break;
}
}
requestInfo.Key 是请求的命令行用空格分隔开的第一部分
- 通过Telnet客户端进行测试
你可以打开telnet客户端去验证以上代码。
当然和服务器端建立连接之后,你可以通过下面的方式与服务器端交互("C:"之后的信息代表客户端的请求,"S:"之后的信息代表服务器端的响应):
C: ECHO ABCDEF
C: ADD 1 2
S: 3
C: ADD 250 250
S: 500
S: 16
C: MULT 125 2
S: 250
例如,你可以定义一个名为"ADD"的类去处理Key为"ADD"的请求:
定义一个名为"MULT"的类去处理Key为"MULT"的请求:
public class MULT : CommandBase<AppSession, StringRequestInfo>
{
public override void ExecuteCommand(AppSession session, StringRequestInfo requestInfo)
{
var result = 1;
foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p)))
{
result *= factor;
}
session.Send(result.ToString());
}
}
appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(appServer_NewRequestReceived);