SuperSocket入门(一)-Telnet服务器和客户端请求处理
本文的控制台项目是根据SuperSocket官方Telnet示例代码进行调试的,官方示例代码:Telnet示例。
开始我的第一个Telnet控制台项目之旅:
创建控制台项目:打开vs程序,文件=》新建=》项目

一、下载SuperSocket的动态库,主要有两种方式获取SuperSocket的动态库。
1、添加SuperSocket的dll文件(SuperSocket.Common.dll, SuperSocket.SocketBase.dll, SuperSocket.SocketEngine.dll)到此项目的引用,直接再官方网站上下载SuperSocket组件,引入需要dll文件即可:

2、通过 nuget来获取,本人也比较喜欢这种方式,可以更新组件版本。(注意:我这里使用的是vs2015可以直接打开nuget,如果使用vs旧版本的同学需要下载nuget组件)

点击浏览,输入supersocket,勾选组件安装即可

添加完成组件后需要注意将config文件进行编译成内容,log4net需要使用config文件。

查看引入后的项目整体目录,框红线的为引入supersocket组件和文件

二、使用官方提供的启动服务器的代码进行测试服务启动和停止
/// <summary>
/// SuperSocket服务启动或停止
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Console.WriteLine("请按任何键进行启动SuperSocket服务!"); Console.ReadKey();
Console.WriteLine(); var appServer = new AppServer(); //启动应用服务端口
if (!appServer.Setup()) //启动时监听端口2017
{
Console.WriteLine("服务端口启动失败!");
Console.ReadKey();
return;
} Console.WriteLine(); //尝试启动应用服务
if (!appServer.Start())
{
Console.WriteLine("服务启动失败!");
Console.ReadKey();
return;
} Console.WriteLine("服务启动成功,请按'E'停止服务!"); while (Console.ReadKey().KeyChar != 'E')
{
Console.WriteLine();
continue;
} //停止服务
appServer.Stop(); Console.WriteLine("服务已停止!");
Console.ReadKey();
}
telnet服务启动和关闭
运行项目:

运行成功后可以查看Debug文件夹下的logs日志跟踪文件,从日志里面,我们可以看到服务器已经能启动成功,但是这还没有什么用,因为我们并没有处理客户的链接进来,处理客户的发送过来的信息。根据官方文档,我们继续拷贝代码来完善我们的程序。
三、注册客户端链接和处理客户端发送信息
1、处理客户端连接,注册回话新建事件处理方法
appServer.NewSessionConnected += new SessionHandler(appServer_NewSessionConnected);
2、在事件处理代码中发送欢迎信息给客户端
static void appServer_NewSessionConnected(AppSession session)
{
session.Send("Welcome to SuperSocket Telnet Server!");
}
3、使用Telnet客户端进行测试(注意:使用telnet必须先安装telnet服务)

安装完成后,先运行telnet服务器

进行运行win+r命令窗口cmd ,输入telnet localhost 2017。(2017是开始程序中侦听的端口)

回车,显示欢迎语说明客户端和服务器端进行链接成功。

4、处理客户端发送的信息,我继续拷贝代码
/// <summary>
///客户端请求处理
/// </summary>
/// <param name="session">会话</param>
/// <param name="requestInfo">请求信息</param> static void appServer_NewRequestReceived(AppSession session, StringRequestInfo requestInfo)
{
switch (requestInfo.Key.ToUpper())
{
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 = ; foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p)))
{
result *= factor;
} session.Send(result.ToString());
break;
}
}
客户端发送请求处理
5、注册请求事件
appServer.NewRequestReceived += new RequestHandler<AppSession, StringRequestInfo>(appServer_NewRequestReceived);
注册客户端请求事件
运行效果:

除了使用telnet客户端,网上还有一个tcp/udp的测试工具可以链接服务器


今天的supersocket框架的入门学习就到这里了,本人水平和文笔有限,有错误的地方欢迎大家指正!
SuperSocket入门(一)-Telnet服务器和客户端请求处理的更多相关文章
- Telnet服务器和客户端请求处理
Telnet服务器和客户端请求处理 本文的控制台项目是根据SuperSocket官方Telnet示例代码进行调试的,官方示例代码:Telnet示例. 开始我的第一个Telnet控制台项目之旅: 创建控 ...
- SuperSocket入门(二)- 探索AppServer、AppSession,Conmmand和App.config
在上一篇文章中,我们已经了解到了如何在SuperSocket处理客户端请求. 同时我们可能会发现一个问题,如果我们的服务器端包含有很多复杂的业务逻辑,这样的switch/case代码将会很 ...
- SuperSocket入门(三)-Telnet多服务实例和服务实例交互配置详解
在SuperSocket入门(二)中我们已经简单了解了通过配置App.config文件使用BootStrap启动SuperSocket服务.我们先来看一下上个案例中的基本配置文件示例: < ...
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world
2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...
- Netty入门(二)时间服务器及客户端
在这个例子中,我在服务器和客户端连接被创立时发送一个消息,然后在客户端解析收到的消息并输出.并且,在这个项目中我使用 POJO 代替 ByteBuf 来作为传输对象. 一.服务器实现 1. 首先我们 ...
- 18-ESP8266 SDK开发基础入门篇--TCP 服务器 RTOS版,串口透传,TCP客户端控制LED
https://www.cnblogs.com/yangfengwu/p/11112015.html 先规定一下协议 aa 55 02 01 F1 4C 控制LED点亮 F1 4C为CRC高位和低位 ...
- CentOS下架设Telnet服务器
CentOS下架设Telnet服务器1.什么是Telnet?来自度娘的解释:Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机 ...
- c#Socket服务器与客户端的开发(1)
上个项目中用到了Socket通讯,项目中直接借助SuperSocket实现,但是我觉得这毕竟是一个我没接触过的东西,所以也顺便学习了一下原生socket的使用,做了一个socket服务器与客户端的开发 ...
- c#Socket服务器与客户端的开发(2)
上一篇文章我们使用原生的socket分别实现了服务器和客户端, 本篇文章使用SuperSocket来开发实现服务器, 之前也介绍了SuperSocket是一个轻量级, 跨平台而且可扩展的 .Net/M ...
随机推荐
- eclipse代码提示配置
打开 MyEclipse 6.5,然后“window”→ “Preferences” 2.选择“java”, 展开, “Editor”, 选择“Content Assist”. 3.选择“Conten ...
- struts2-----新建项目
1. 建立界面原型 2. 建立Struts.xml 确定namespace, package, action, 空方法, result, 界面原型修改, 匹配现有设置, 测试, 做好规划 3. 建立数 ...
- hibernate--ID生成策略--XML
xml生成id, a) generator b) 常用4个: native, uuid, identity, sequence 1. 新建java项目, 引入hibernate, junit(use ...
- CodeForces 618C CodeForces 618C
第一反应是在凸包上随便找一条边,然后找剩下n-2个点里面距离这条边最短的一个点,这三点就构成了符合要求的三角形..然而..精度被卡死. 换种思路,随便找两个点P1,P2,找剩下n-2个点中哪一个点与P ...
- nginx location配置(URL)
语法规则: location [=|~|~*|^~] /uri/ { … }= 表示精确匹配,这个优先级也是最高的^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url ...
- Spring--Bean scope
singleton, prototype,request, session, global session bean.xml: <?xml version="1.0" enc ...
- Jsp属性范围
IDE:MyEclipse 2014(自带Tomcat 7) Web项目路径: Web项目配置信息: WebRoot --WEB-INF --web.xml <?xml version=&quo ...
- MUI开发注意事项
mui开发注意事项,有需要的朋友可以参考下. mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细的 ...
- JQueryUI确认框 confirm
$(function(){ $('#AlertMsg').dialog({ autoOpen: false, width: 300, modal: true, position: 'center', ...
- linux下安装mysql(编译mysql源码)
编译所需软件地址 http://mysql.mirror.kangaroot.net/Downloads/ -- 下载需要的mysql版本例如mysql-5.5.39.tar.gz 目前还不太 ...