创建简单的Telnet实例

step1.先加入库SuperSocket.Common.dll, SuperSocket.SocketBase.dll, SuperSocket.SocketEngine.dll,log4net.dll,System.Threading.dll。同时还需引入NET中的System.Configuration。如果要使用默认日志框架,需要复制Config文件夹

step2.代码实现

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Console.WriteLine("press any key to start the server");
 6             Console.ReadKey();
 7             Console.WriteLine();
 8             AppServer server = new AppServer();
 9             if (!server.Setup(8000))
10             {
11                 Console.WriteLine("Failed to setup");
12                 Console.ReadKey();
13                 return;
14             }
15
16             server.NewSessionConnected += new SessionHandler<AppSession>(server_NewSessionConnected);
17             server.NewRequestReceived += new RequestHandler<AppSession, SuperSocket.SocketBase.Protocol.StringRequestInfo>(server_NewRequestReceived);
18
19             if (!server.Start())
20             {
21                 Console.WriteLine("Failed to start");
22                 Console.ReadKey();
23                 return;
24             }
25
26             Console.WriteLine("The server started successfully, press key ‘q‘ to stop it!");
27
28              while (Console.ReadKey().KeyChar != ‘q‘)
29             {
30                 Console.WriteLine();
31                 continue;
32             }
33              Console.WriteLine();
34             server.Stop();
35             Console.WriteLine("The server was stopped!");
36         }
37
38         static void server_NewRequestReceived(AppSession session, SuperSocket.SocketBase.Protocol.StringRequestInfo requestInfo)
39         {
40             Console.WriteLine(requestInfo.Key + " " + requestInfo.Body);
41             switch (requestInfo.Key.ToUpper())
42             {
43                 case ("ECHO"):
44                     string r = requestInfo.Body;
45                     session.Send(r);
46                     Console.WriteLine(r);
47                     break;
48
49                 case ("ADD"):
50                     string r2= requestInfo.Parameters.Select(p => Convert.ToInt32(p)).Sum().ToString();
51                     session.Send(r2);
52                     Console.WriteLine(r2);
53                     break;
54
55                 case ("MULT"):
56
57                     var result = 1;
58
59                     foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p)))
60                     {
61                         result *= factor;
62                     }
63
64                     session.Send(result.ToString());
65                     Console.WriteLine(result);
66                     break;
67             }
68         }
69
70         static void server_NewSessionConnected(AppSession session)
71         {
72             Console.WriteLine(session.SessionID + ":connect successed");
73         }
74     }

Step3.测试:代码测试:在window中运行里面输入telnet 127.0.0.1 8000  然后按回车就可以了

时间: 2024-10-18 10:19:47

创建简单的Telnet实例的相关文章

原生js实现的创建和删除元素实例代码

原生js实现的创建和删除元素实例代码:在实际应用中,往往需要动态的创建和删除指定的元素,下面就通过代码实例介绍一下如何实现此功能.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title&g

IOS 创建简单表视图

创建简单表视图 此实例主要实现UITableViewDataSource协议中必须要实现的两个方法tableView:numberOfRowsInSection: 和tableView:cellForRowAtIndexPath: 当表视图显示的时候会发出tableView:numberOfRowsInSection:消息询问当前节中的行数. 当表视图单元格显示的时候会发出tableView:cellForRowAtIndexPath:消息为单元格提供显示数据. 一.实现的时序图,如下: 二.示

jQuery EasyUI 窗口 – 创建简单窗口

jQuery EasyUI 窗口 – 创建简单窗口 创建一个窗口(window)非常简单,我们创建一个 DIV 标记: <div id="win" class="easyui-window" title="My Window" style="width:300px;height:100px;padding:5px;"> Some Content. </div> 现在运行测试页面,您会看见一个窗口(win

审核流(3)低调奢华,简单不凡,实例演示-SNF.WorkFlow--SNF快速开发平台3.1

下面我们就从什么都没有,结合审核流进行演示实例.从无到有如何快速完美的实现,然而如此简单.低调而奢华,简单而不凡. 从只有数据表通过SNF.CodeGenerator代码生成器快速生成单据并与审核流进行结合案例. 现在我只有这样一个表如下:(下面介绍单表,多表原理是一样的) 1.审核流结合代码生成器快速实现 1.用代码生成器生成单据(选择启用审核流) 之后点击“生成“并把对应代码拷贝到相应的位置,执行脚本把菜单预制进去,详见“06.SNF.CodeGenerator代码生成器使用说明.docx”

(转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解

使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解 本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创建json,从json中获取数据 1 #include <stdio.h> 2 #include "cJSON.h" 3 4 char * makeJson() 5 { 6 cJSON * pJsonRoot = NULL; 7 8 pJsonRoot = cJSON_Create

Java Tread多线程(0)一个简单的多线程实例

作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39341887 本文演示,一个简单的多线程实例,并简单分析一下线程. 编程多线程时,一般步骤: 1)继承Thread函数. 2)覆盖run函数. 注意:1)main函数为主线程,main里面存放的是主线程的执行代码: Demo1为子线程,里面的run函数里面存放的是子线程需要执行的代码:其中,本文中主线程和子线程执行的优先级是一样的. 2)启动线程必须用start()启动,

最简单的struts实例介绍

struts2环境配置 struts2框架,大多数框架都在使用.由于工作需要,开始做Java项目.先学个struts2. 一.下载struts2 有好多版本,我下载的是struts-2.2.1.1. 二.创建web项目,导入使用struts2所必须的jar包. 我使用的是MyEclipse 7.5.建立web项目,给项目添加外部引用包(project-properties-Java Build Path-Add External Jars...).添加的包有:commons-fileupload

雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建简单的菜单

jQuery EasyUI 菜单与按钮 - 创建简单的菜单 菜单(Menu)定义在一些 DIV 标记中,如下所示: New Open Word Excel PowerPoint Save Exit 当菜单创建之后是不显示的,调用 'show' 方法显示它或者调用 'hide' 方法隐藏它: $('#mm').menu('show', { left: 200, top: 100 }); 下载 jQuery EasyUI 实例 jeasyui-mb-menu.zip 本文转载自:w3cschool(

Python---BeautifulSoup 简单的爬虫实例

对python自动化比较熟的同学,很多都懂一些爬虫方法,有些还研究的很深,下面呢我介 绍一个简单的爬虫实例,供大家参考.当然里面有很多需求是可以再学习的,下载进度的显 示.下载完成的提示等等. 一.首先我们要研究爬虫网站的架构,我这里已ring.itools.cn为例,我需要爬的是铃声. 大家可以自己去分析,这个网站的架构比较简单就不讲了. 我们最终要获取的是下面两个信息: 二.我们写下面的脚本来获取 上面的脚本呢,获取到songname和playaddr都是一组数据,即都是列表,我们需要把 他