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

Posted Kimisme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SuperSocket学习笔记-一个完整的例子相关的知识,希望对你有一定的参考价值。

一、什么是SuperSocket

以下是作者的介绍

image

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

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

二、项目结构

image

三、开发过程

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

1.1引用相关项目

image

1.2从Solution Items中引进日志文件

image

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

image

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 
View Code

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

image

image

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

以上是关于SuperSocket学习笔记-一个完整的例子的主要内容,如果未能解决你的问题,请参考以下文章

SuperSocket基础二

C#里发现SuperSocket库不能发现命令的原因

SuperSocket与Netty之实现protobuf协议,包括服务端和客户端

SuperSocket入门-命令行协议

基于开源SuperSocket实现客户端和服务端通信项目实战

iOS 学习完整项目,优秀的动画例子收藏 5