SuperSocket:TCP服务器最简单的例子

       在C#中使用Socket时,发现TCP服务器处理起来有很多细节很麻烦,后来发现可以使用SuperSocket进行设计。于是写了一篇入门的例子。

1.安装使用nuget

在扩展工具栏里,联机库搜索 nuget ,找到 nuget安装包管理器。安装,重启软件。

SuperSocket:TCP服务器最简单的例子_第1张图片


2.在项目中添加SuperSocket库

如图右键工程名,选择“管理NuGet程序包”

然后在界面中联机搜索SuperSocket,选择安装SuperSocket以及SuperSocket.Engine

SuperSocket:TCP服务器最简单的例子_第2张图片

这是已安装的

SuperSocket:TCP服务器最简单的例子_第3张图片

3.添加代码

创建一个普通的工程。添加以下3个类。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;
using SuperSocket.SocketBase.Command;

namespace supersocket
{
    public class MYSession : AppSession
    {
        
        public int ID { get; set; }
        /// 
        /// 用户连接会话
        /// 
        protected override void OnSessionStarted()
        {
            Console.WriteLine("New Request");
            base.OnSessionStarted();
        }

        /// 
        /// 未知的用户请求命令
        /// 
        /// 
        protected override void HandleUnknownRequest(StringRequestInfo requestInfo)
        {
            base.HandleUnknownRequest(requestInfo);
        }

        protected override void OnSessionClosed(CloseReason reason)
        {
            Console.WriteLine("会话关闭");
            base.OnSessionClosed(reason);
        }
    }

    public class ADD : CommandBase
    {
        public override void ExecuteCommand(MYSession session, StringRequestInfo requestInfo)
        {
            session.ID = 1;
            var key = requestInfo.Key;
            var body = requestInfo.Parameters.Select(p => Convert.ToInt32(p)).Sum().ToString();
            session.Send( key+": result="+body);
        }
    }

    public class MYServer : AppServer
    {
        public MYServer()
            : base(new TerminatorReceiveFilterFactory("#")) //表示使用#作为命令的结束符
        { 
            
        }
    }

}

MYSession是自定义的会话控制类,ADD是自定义的命令类,MYServer是自定义的服务器类。命令类不是必要的,可以不要。

然后在需要开启服务器的地方添加以下代码

            var appServer = new TestServer();
            if (!appServer.Setup(60000)) //开启的监听端口:60000
            {
                Console.WriteLine("Failed to Setup!");
                return;
            }
            if (!appServer.Start())
            {
                Console.WriteLine("Failed to Start!");
                return;
            }
            Console.WriteLine("The server started successfully.");
要关闭该服务器则

     appServer.Stop();

4.测试

使用SOCKET调试工具测试一下

SuperSocket:TCP服务器最简单的例子_第4张图片



你可能感兴趣的:(socket)