SuperSocket学习笔记(一)-一个完整的例子

一、什么是SuperSocket

以下是作者的介绍

执行以下命令,获取SuperSocket项目

$ git clone https://github.com/kerryjiang/SuperSocket

二、项目结构

三、开发过程

1.新建一个控制台项目ConsoleApp

1.1引用相关项目

1.2从Solution Items中引进日志文件

1.3设置SuperSocket.SocketBase45的log4net文件属性设置为【复制到本地】

2.编写Main方法

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 using SuperSocket.SocketBase;
  7
  8 namespace ConsoleApp
  9 {
 10     class Program
 11     {
 12         static void Main(string[] args)
 13         {
 14             var appServer = new AppServer();
 15             int port = 8888;
 16             if (!appServer.Setup(port))
 17             {
 18                 Console.WriteLine("端口设置失败");
 19                 Console.ReadKey();
 20                 return;
 21             }
 22             //连接时
 23             appServer.NewSessionConnected += appServer_NewSessionConnected;
 24             //接收信息时
 25             appServer.NewRequestReceived += appServer_NewRequestReceived;
 26             //关闭服务时
 27             appServer.SessionClosed += appServer_SessionClosed;
 28             if (!appServer.Start())
 29             {
 30                 Console.WriteLine("启动服务失败");
 31                 Console.ReadKey();
 32                 return;
 33             }
 34             Console.WriteLine("服务启动成功,输入q退出");
 35
 36             while (true)
 37             {
 38                 var str = Console.ReadLine();
 39                 if (str.ToLower().Equals("q"))
 40                 {
 41                     break;
 42                 }
 43             }
 44             Console.WriteLine();
 45             appServer.Stop();
 46             Console.WriteLine("服务已停止,按任意键退出");
 47             Console.ReadKey();
 48         }
 49
 50         private static void appServer_NewSessionConnected(AppSession session)
 51         {
 52             session.Send("Hello World!");
 53         }
 54
 55         static void appServer_NewRequestReceived(AppSession session, SuperSocket.SocketBase.Protocol.StringRequestInfo requestInfo)
 56         {
 57             switch (requestInfo.Key.ToLower())
 58             {
 59                 case "1":
 60                     session.Send("You input 1");
 61                     break;
 62                 case "2":
 63                     session.Send("You input 2");
 64                     break;
 65                 default:
 66                     session.Send("Unknow ");
 67                     break;
 68             }
 69         }
 70
 71         static void appServer_SessionClosed(AppSession session, CloseReason value)
 72         {
 73             session.Send("服务已关闭");
 74         }
 75     }
 76 }
 77 

3.运行项目,使用Telnet为客户端

四.接下来就是看源码一步一步调试了

时间: 2024-10-12 04:51:31

SuperSocket学习笔记(一)-一个完整的例子的相关文章

WCF学习笔记(1)-一个完整的例子

一.开发环境 IDE:VS2013 OS:Win10 IIS:IIS 10 二.开发流程 1.项目结构 2.添加一个WCF程序 3.删除系统自动生成的两个文件IService1.cs和Service1.svc 4.添加自定义的WCF服务文件 5.在IUser.cs文件中,定义方法名 注: [ServiceContract]来说明是一个WCF接口,不加的话,不能被外部调用 [OperationContract]来说明该方法是一个WCF接口的方法,不加不能被外部调用 namespace WCFSer

DirectX11 学习笔记4 - 一个完整的封装框架

本程序主要由5个文件组成.1个CPP 4个H文件  本来H文件可以分为4个CPP4个H,但是感觉太多了,就写到一起了 XMain 这个文件就是windows程序的入口函数 <span style="font-size:14px;">//入口 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iCmdshow) { XWindow *xwindow=new

SuperSocket学习笔记(一)

这是根据我自己学习的经历整理出来的,如有不对之处,还请多多指教! SuperSocket源码下载 SuperSocket文档 安装并启动Telnet 学习方法: QuickStrart + 文档 参考资料: 服务器架设:    http://blog.csdn.net/kuanzai123/article/details/17013213 基本认识:        http://blog.qiangk.com/2013/08/03/learning-supersocket-opensouce-p

iOS: 学习笔记, 添加一个带界面约束的控制器

1. 创建一个空iOS应用程序(Empty Application). 2. 添加加控制器类. 修改控制器类的viewDidLoad 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 //创建标题 5 UILabel *header = [[UILabel alloc] init]; 6 header.text = @"欢迎来到我的世界!"; 7 header.textAlignment = NSTextAlignmentCenter

Access应用笔记&lt;四&gt;-一个完整的自动化报表搭建过程

距离之前的三篇日志已经很久啦,今天终于完成了一个比较完整的自动化报表搭建过程 基于公司数据保密原则,样板就不放到网上来了,简单说一下背景: 这次access实现的功能包括: 1)为部门整体搭建了一个员工基本资料数据库,里面包括从各个系统里获得的员工信息,如Zhang San,一个系统里叫San Zhang,一个系统叫sazhang,一个系统叫sun Zhang.这些信息汇总后,存在部门共享盘里,包括此次的Access,都是直接链接到这个总access表里,这样,有新员工来的时候,只需要更新一个a

多线程编程学习笔记——编写一个异步的HTTP服务器和客户端

接上文 多线程编程学习笔记——使用异步IO 二.   编写一个异步的HTTP服务器和客户端 本节展示了如何编写一个简单的异步HTTP服务器. 1.程序代码如下. using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Ta

Vue2.x源码学习笔记-从一个小例子查看vm实例生命周期

学习任何一门框架,都不可能一股脑儿的从入口代码从上到下,把代码看完, 这样其实是很枯燥的,我想也很少有人这么干,或者这么干着干着可能干不下去了. 因为肯定很无聊. 我们先从一个最最简单的小例子,来查看new Vue(options)实例,这个过程发生了什么. vm实例上的属性又如何添加上去的,又如何渲染到浏览器页面上的. 关于vue的数据依赖和虚拟dom都是重点,必然会在以后的帖子记录. 这篇帖子就根据下例子,看看实例化一个vm实例做了啥吧. 先把小例子贴出来: <div id="app&

Oracle学习笔记_05_ 一个创建表空间、创建用户、授权的完整过程

一.完整命令 su - oracle sqlplus /nolog conn /as sysdba create tablespace scaninvoice logging datafile '/u01/app/oracle/oradata/mas/scaninvoice.dbf' size 200M autoextend on next 100m extent management local; create temporary tablespace scaninvoice_tmp temp

struts2学习笔记——第一个struts2应用配置

说实在的,随着Java学习的不断深入,特别是Java web框架部分,调bug让人很心累,但是每征服一个bug,内心的成就感也是难以言说的.第一个struts2应用的配置,我昨天折腾了快2个小时,最后还是放弃了,今天在摸索之下,终于打通了第一个struts2的任督二脉,下来就把我个人的配置过程写下来,希望后面学习的java友少走的弯路. 一.创建web工程(eclipse k kepler版本): 直接上图: 二.导入struts2关键包 1.需要导入的关键包,不导入这些包会导致报错,我就知bu