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服务器和客户端请求处理)相关推荐

  1. C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)

    C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...

  2. C# SuperSocket 手把手教你入门 傻瓜教程---5(探索自定义AppServer、AppSession,Conmmand,用配置文件App.comfig启动服务器)

    C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...

  3. 手把手教你入门 Git 教程,图文实例详解

    前言 Git简介 实用主义 深入探索 总结 参考资料 Git简介 Git 是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目前已经成为程序开发人员做项目版本管理时的首选,非开发人 ...

  4. 手把手教你入门Git --- Git使用指南(Linux)

    手把手教你入门Git - Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对gi ...

  5. python新手入门代码-新手必看:手把手教你入门 Python

    原标题:新手必看:手把手教你入门 Python 本文为 AI 研习社编译的技术博客,原标题 : Learning Python: From Zero to Hero 翻译 |永恒如新的日常校对 | 酱 ...

  6. 拆装计算机主机,零基础如何组装电脑?装机之家手把手教您电脑组装教程图解...

    自己组装电脑对于小白来说,确实是一个技术活,如果没有一点点电脑组装经验,肯定无从下手的.当然对于目前互联网信息化时代,想要找一篇装机教程并不难,那么我们跟着装机教程一步一步学习并实践,相信很快就可以将 ...

  7. 手把手教你入门Python爬虫(二)

    手把手教你入门Python爬虫 前言   在上一篇文章中,我们讲解到了基础的计算机网络知识,并完成了"爬取豆瓣Top250电影信息"的项目.那么这一次,作者将带领大家完成" ...

  8. 报名 | NVIDIA线下交流会:手把手教你搭建TensorFlow Caffe深度学习服务器

    7月21日(周六)下午14:30,量子位与NVIDIA英伟达开发者社区联合举办线下交流会,拥有丰富一线开发经验的NVIDIA开发者社区经理Ken He,将手把手教你搭建TensorFlow & ...

  9. 腾讯云服务器使用教程,手把手教你入门

    腾讯云服务器使用教程包括注册账号实名认证.选择云服务器CVM或轻量应用服务器CPU内存带宽和系统盘配置.安全设置和云服务器远程连接.安全组端口开通教程.云服务器环境部署以搭建网站为例手把手网站上线,云 ...

最新文章

  1. 代码提示_PHPStorm 支持 Laravel Facades 的代码提示
  2. 想一下,最大公约数怎么求
  3. python怎么输入列表元素每个元素占一行_如何对列表的每个元素执行操作并将结果放在Python的新列表中?...
  4. dz seo插件_河北seo优化网络推广报价单
  5. CSS的display:table-cell:多行文字的垂直居中水平居中
  6. poj 3082多边形相交 'Roid Rage
  7. spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring
  8. svn 自动同步到web站点目录post-commit.bat
  9. 数据产品-数据分析方法论和分析方法介绍
  10. android Bundle的作用
  11. pip源使用国内镜像
  12. sap 中migo收货自动打印smartform_EWM MES/ERP集成 生产收货的几种方式
  13. JS判断浏览器语言及终端类型(android/ios)
  14. 编程基本功:一个任务的难度是不是适合自己,有没有产出,心里要有数
  15. html5获取坐标高德,高德地图坐标的获取( JavaScript API )
  16. 啦啦外卖独立版41.4最新外卖源码全开源带vue源码
  17. Python可视化:python画图字体设置
  18. 《财富》杂志评选出必读的75本最睿智的图书
  19. 我国历史上各个朝代的都城
  20. InfoPath2007中添加图片按钮

热门文章

  1. java设置地图,mapXtreme for java 设置地图中点
  2. 关于ACCESS数据库版本问题
  3. Struts2框架简单入门
  4. 计算机软件 csc csu,4-TS-软件设计说明模板(GJB438A).doc
  5. 云和恩墨加入GCC,共建绿色计算产业生态
  6. STM32使用库函数控制时钟芯片DS1302提供时间
  7. 斯坦福大学计算机视觉课程cs231n——第一课:课程介绍 计算机视觉概述
  8. C语言 | 单链表的冒泡排序
  9. jboss ejb 3
  10. oracle prompt出错,Oracle 用 sqlprompt 修改 sqlplus 提示符