C# SuperSocket 手把手教你入门 傻瓜教程---3(Telnet服务器和客户端请求处理)
C# SuperSocket 手把手教你入门 傻瓜教程系列教程
C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)
C# SuperSocket 手把手教你入门 傻瓜教程---2(服务器和客户端双向通信)
C# SuperSocket 手把手教你入门 傻瓜教程---3(Telnet服务器和客户端请求处理)
C# SuperSocket 手把手教你入门 傻瓜教程---4(创建一个服务器和多客户端双向通信程序)
C# SuperSocket 手把手教你入门 傻瓜教程---5(探索自定义AppServer、AppSession,Conmmand,用配置文件App.comfig启动服务器)
C# SuperSocket 手把手教你入门 傻瓜教程---6(CommandLineProtocol---命令行协议)
C# SuperSocket 手把手教你入门 傻瓜教程---7(自定义CommandLineProtocol---命令行协议)
C# SuperSocket 手把手教你入门 傻瓜教程-8(TerminatorReceiveFilter - 结束符协议)
目录
一、创建工程项目
二、下载SuperSocket动态库
三、使用官方提供的启动服务器的代码进行测试服务器的启动和停止
四、注册客户端链接
五、注册会话接收事件处理客户端发送的信息
六、用SocketTool工具软件和Telnet服务器测试
本文的控制台项目是根据SuperSocket官方Telnet示例代码进行调试的,官方示例代码:Telnet示例。
开始我的第一个Telnet控制台项目之旅:
一、创建工程项目
创建控制台项目:打开visual Studio 2017程序,文件--->新建--->项目
创建一个项目名称为:SuperSocketDemo 的工程项目。
二、下载SuperSocket动态库
最好通过Visual Stuido 2017程序的NuGet来获取,本人也比较喜欢这种方式,可以更新组件版本。
1、点击浏览,输入SuperSocket,选中SuperSocket组件安装SuperSocket组件。
2、选中SuperSocket.Engine组件,安装SuperSocket.Engine组件。
3、添加完成组件后需要注意将config文件进行编译成内容,log4net需要使用config文件
将Config文件夹中的log4net.config的【复制到输出目录】组态为“如果较新则复制”
4、查看引入后的项目整体目录,框红线的为引入supersocket组件和log4net文件
三、使用官方提供的启动服务器的代码进行测试服务器的启动和停止
1、Program.cs中添加如下三行代码
using SuperSocket.Common;
using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;
2、Program.cs中添加如下telnet服务启动和关闭程序代码
static void Main(string[] args){var appServer = new AppServer();//启动应用服务端口if (!appServer.Setup(2017)) //启动时监听端口2017{Console.WriteLine("服务端口启动失败!");Console.ReadKey();return;}Console.WriteLine();//尝试启动应用服务if (!appServer.Start()){Console.WriteLine("服务启动失败!");Console.ReadKey();return;}Console.WriteLine("服务启动成功,请按'q'停止服务!");while (Console.ReadKey().KeyChar != 'q'){Console.WriteLine();continue;}//停止服务appServer.Stop();Console.WriteLine("服务已停止!");Console.ReadKey();}
3、Program.cs完整的程序代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using SuperSocket.Common;
using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;namespace SuperSocketDemo
{class Program{static void Main(string[] args){var appServer = new AppServer();//启动应用服务端口if (!appServer.Setup(2017)) //启动时监听端口2017{Console.WriteLine("服务端口启动失败!");Console.ReadKey();return;}Console.WriteLine();//尝试启动应用服务if (!appServer.Start()){Console.WriteLine("服务启动失败!");Console.ReadKey();return;}Console.WriteLine("服务启动成功,请按'q'停止服务!");while (Console.ReadKey().KeyChar != 'q'){Console.WriteLine();continue;}//停止服务appServer.Stop();Console.WriteLine("服务已停止!");Console.ReadKey();}}
}
4、验证项目
运行成功后可以查看Debug文件夹下的logs日志跟踪文件,从日志里面,我们可以看到服务器已经能启动成功,但是这还没有什么用,因为我们并没有处理客户的链接进来,处理客户的发送过来的信息。根据官方文档,我们继续拷贝代码来完善我们的程序。
四、注册客户端链接
1、注册客户端连接方法
Program.cs中添加如下【注册客户端连接方法】代码
appServer.NewSessionConnected += appServer_NewSessionConnected;
2、在连接方法中发送欢迎信息给客户端
Program.cs中添加如下【在连接方法中发送欢迎信息给客户端】代码。
static void appServer_NewSessionConnected(AppSession session){session.Send("Welcome to SuperSocket Telnet Server!");}
3、 Program.cs完整的程序代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using SuperSocket.Common;
using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;namespace SuperSocketDemo
{class Program{static void Main(string[] args){var appServer = new AppServer();//启动应用服务端口if (!appServer.Setup(2017)) //启动时监听端口2017{Console.WriteLine("服务端口启动失败!");Console.ReadKey();return;}Console.WriteLine();//尝试启动应用服务if (!appServer.Start()){Console.WriteLine("服务启动失败!");Console.ReadKey();return;}Console.WriteLine("服务启动成功,请按'q'停止服务!");appServer.NewSessionConnected += appServer_NewSessionConnected;while (Console.ReadKey().KeyChar != 'q'){Console.WriteLine();continue;}//停止服务appServer.Stop();Console.WriteLine("服务已停止!");Console.ReadKey();}static void appServer_NewSessionConnected(AppSession session){session.Send("Welcome to SuperSocket Telnet Server!");}}
}
4、使用Telnet客户端进行测试(注意:使用telnet必须先安装telnet服务)
win10安装telnet服务后重启计算机。
5、验证项目
(1)、安装完成Telnet客户端后,先运行telnet服务器
(2)、进入运行win+r命令窗口cmd ,输入telnet localhost 2017。
注:2017是端口号,参见前面的代码
if (!appServer.Setup(2017))
(3)、输入telnet localhost 2017按回车键后,出现Telnet Localhost窗口,窗口中有如下欢迎词“Welcome to SuperSocket Telnet Server!”,则说明服务器和Telnet客户端连接成功,参见下图。
五、注册会话接收事件处理客户端发送的信息
1、注册会话接收事件
Program.cs中添加如下【注册会话接收事件】代码
appServer.NewRequestReceived += appServer_NewRequestReceived;
2、处理会话接收事件中服务器接收到客户端发送的信息,我继续拷贝代码
Program.cs中添加如下【处理会话接收事件中服务器接收到客户端发送的信息】代码
/// <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 = 1;foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p))){result *= factor;}session.Send(result.ToString());break;}}
3、Program.cs完整的程序代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using SuperSocket.Common;
using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;namespace SuperSocketDemo
{class Program{static void Main(string[] args){var appServer = new AppServer();//启动应用服务端口if (!appServer.Setup(2017)) //启动时监听端口2017{Console.WriteLine("服务端口启动失败!");Console.ReadKey();return;}Console.WriteLine();//尝试启动应用服务if (!appServer.Start()){Console.WriteLine("服务启动失败!");Console.ReadKey();return;}Console.WriteLine("服务启动成功,请按'q'停止服务!");appServer.NewSessionConnected += appServer_NewSessionConnected;appServer.NewRequestReceived += appServer_NewRequestReceived;while (Console.ReadKey().KeyChar != 'q'){Console.WriteLine();continue;}//停止服务appServer.Stop();Console.WriteLine("服务已停止!");Console.ReadKey();}static void appServer_NewSessionConnected(AppSession session){session.Send("Welcome to SuperSocket Telnet Server!");}/// <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 = 1;foreach (var factor in requestInfo.Parameters.Select(p => Convert.ToInt32(p))){result *= factor;}session.Send(result.ToString());break;}}}
}
4、验证项目
(1)、先运行telnet服务器
(2)、进入运行win+r命令窗口cmd ,输入telnet localhost 2017。
(3)、输入telnet localhost 2017按回车键后,出现Telnet Localhost窗口,窗口中有如下欢迎词“Welcome to SuperSocket Telnet Server!”,则说明服务器和Telnet客户端连接成功,参见下图。
(4)、在Telnet客户端输入ECHO
可以观察到Telnet服务器收到了Telnet客户端发送的ECHO
(5)、在Telnet客户端输入ADD
可以观察到Telnet服务器收到了Telnet客户端发送的ADD
(6)、在Telnet客户端输入MULT
可以观察到Telnet服务器收到了Telnet客户端发送的MULT
六、用SocketTool工具软件和Telnet服务器测试
网上有一个tcp/udp的测试工具(SocketTool)可以链接服务器,下面是测试过程
1、运行Telnet服务器
2、SocketTool设置IP地址为127.0.0.1,端口号为2017
3、Telnet服务器和SocketTool客户端连接成功
可以观察到SocketTool客户端收到了Telnet服务器发送的欢迎信息“Welcome to SuperSocket Telnet Server!”
4、SocketTool客户端输入 ADD 12345
服务器收到客户端发送的ADD 12345后,给客户端回复12345
5、SocketTool客户端输入 ECHO 67890
服务器收到客户端发送的ECHO 67890后,给客户端回复67890
6、SocketTool客户端输入 MULT 10 20 30
服务器收到客户端发送的MULT 10 20 30后,给客户端回复6000
源程序参见如下链接:
C#SuperSocket手把手教你入门傻瓜教程(三).zip_supersocket教程-互联网文档类资源-CSDN下载
源程序中包含SocketTool.exe TCP&UPD测试工具
开发工具为:Visual Studio 2017
致谢!
黄昏前黎明后黄昏前黎明后
C# SuperSocket 手把手教你入门 傻瓜教程---3(Telnet服务器和客户端请求处理)相关推荐
- C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)
C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...
- C# SuperSocket 手把手教你入门 傻瓜教程---5(探索自定义AppServer、AppSession,Conmmand,用配置文件App.comfig启动服务器)
C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...
- 手把手教你入门 Git 教程,图文实例详解
前言 Git简介 实用主义 深入探索 总结 参考资料 Git简介 Git 是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目前已经成为程序开发人员做项目版本管理时的首选,非开发人 ...
- 手把手教你入门Git --- Git使用指南(Linux)
手把手教你入门Git - Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对gi ...
- python新手入门代码-新手必看:手把手教你入门 Python
原标题:新手必看:手把手教你入门 Python 本文为 AI 研习社编译的技术博客,原标题 : Learning Python: From Zero to Hero 翻译 |永恒如新的日常校对 | 酱 ...
- 拆装计算机主机,零基础如何组装电脑?装机之家手把手教您电脑组装教程图解...
自己组装电脑对于小白来说,确实是一个技术活,如果没有一点点电脑组装经验,肯定无从下手的.当然对于目前互联网信息化时代,想要找一篇装机教程并不难,那么我们跟着装机教程一步一步学习并实践,相信很快就可以将 ...
- 手把手教你入门Python爬虫(二)
手把手教你入门Python爬虫 前言 在上一篇文章中,我们讲解到了基础的计算机网络知识,并完成了"爬取豆瓣Top250电影信息"的项目.那么这一次,作者将带领大家完成" ...
- 报名 | NVIDIA线下交流会:手把手教你搭建TensorFlow Caffe深度学习服务器
7月21日(周六)下午14:30,量子位与NVIDIA英伟达开发者社区联合举办线下交流会,拥有丰富一线开发经验的NVIDIA开发者社区经理Ken He,将手把手教你搭建TensorFlow & ...
- 腾讯云服务器使用教程,手把手教你入门
腾讯云服务器使用教程包括注册账号实名认证.选择云服务器CVM或轻量应用服务器CPU内存带宽和系统盘配置.安全设置和云服务器远程连接.安全组端口开通教程.云服务器环境部署以搭建网站为例手把手网站上线,云 ...
最新文章
- 代码提示_PHPStorm 支持 Laravel Facades 的代码提示
- 想一下,最大公约数怎么求
- python怎么输入列表元素每个元素占一行_如何对列表的每个元素执行操作并将结果放在Python的新列表中?...
- dz seo插件_河北seo优化网络推广报价单
- CSS的display:table-cell:多行文字的垂直居中水平居中
- poj 3082多边形相交 'Roid Rage
- spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring
- svn 自动同步到web站点目录post-commit.bat
- 数据产品-数据分析方法论和分析方法介绍
- android Bundle的作用
- pip源使用国内镜像
- sap 中migo收货自动打印smartform_EWM MES/ERP集成 生产收货的几种方式
- JS判断浏览器语言及终端类型(android/ios)
- 编程基本功:一个任务的难度是不是适合自己,有没有产出,心里要有数
- html5获取坐标高德,高德地图坐标的获取( JavaScript API )
- 啦啦外卖独立版41.4最新外卖源码全开源带vue源码
- Python可视化:python画图字体设置
- 《财富》杂志评选出必读的75本最睿智的图书
- 我国历史上各个朝代的都城
- InfoPath2007中添加图片按钮
热门文章
- java设置地图,mapXtreme for java 设置地图中点
- 关于ACCESS数据库版本问题
- Struts2框架简单入门
- 计算机软件 csc csu,4-TS-软件设计说明模板(GJB438A).doc
- 云和恩墨加入GCC,共建绿色计算产业生态
- STM32使用库函数控制时钟芯片DS1302提供时间
- 斯坦福大学计算机视觉课程cs231n——第一课:课程介绍 计算机视觉概述
- C语言 | 单链表的冒泡排序
- jboss ejb 3
- oracle prompt出错,Oracle 用 sqlprompt 修改 sqlplus 提示符