c#实现Telnet服务器

主题:使用SuperSocket实现简单的Telnet服务器

1.创建.net控制台项目。

2.打开NUGET包管理器安装SuperSocket、SuperSocket.Engine、System.Configuration.ConfigurationManager。

3.Program.cs

using System;
using SuperSocket.SocketBase.Config;

namespace TelnetDemo
{
    class Program
    {
        /// <summary>
        /// SuperSocket服务启动或停止
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Console.WriteLine("service");
            //实例化服务器对象
            SocketServer appServer = new SocketServer();
            //appServer.NewSessionConnected += new AppSession(appServer_NewSessionConnected);
            var serverConfig = new ServerConfig();

            //ip: 服务器监听的ip地址。你可以设置具体的地址,也可以设置为下面的值 Any 
            serverConfig.Ip = "127.0.0.1";

            serverConfig.Port = 8848;
            if (!appServer.Setup(serverConfig))
            {
                Console.WriteLine("Failed to setup!");
                return;
            }
            if (!appServer.Start())
            {
                Console.WriteLine("Failed to start!");
                return;
            }
            Console.WriteLine("ssssss前置机启动成功!,输入q关闭服务器");
            while (Console.ReadKey().KeyChar != 'q')
            {
                continue;
            }
            appServer.Stop();
            Console.WriteLine("服务器已经关闭");
            Console.ReadKey();
        }
    }
}

4.创建AppSession扩展类。

using SuperSocket.SocketBase;
using System;
using System.Text;
using SuperSocket.SocketBase.Protocol;

namespace TelnetDemo
{
    public class SocketSession : AppSession<SocketSession>
    {
        public override void Send(string message)
        {
            Console.WriteLine("发送消息:" + message);
            base.Send(message);
        }
        protected override void OnSessionStarted()
        {
            Console.WriteLine("Session已启动");
            base.OnSessionStarted();
        }

        protected override void OnInit()
        {
            this.Charset = Encoding.GetEncoding("utf-8");
            base.OnInit();
        }
        protected override void HandleUnknownRequest(StringRequestInfo requestInfo)
        {
            Console.WriteLine("遇到未知的请求");
            base.HandleUnknownRequest(requestInfo);
        }
    }
}

5.创建AppServer扩展类。

using SuperSocket.SocketBase;
using System;

namespace TelnetDemo
{
    public class SocketServer : AppServer<SocketSession>
    {
        protected override void OnStarted()
        {
            Console.WriteLine("服务已开始");
            base.OnStarted();
        }

        protected override void OnStopped()
        {
            Console.WriteLine("服务已停止");
            base.OnStopped();
        }
        protected override void OnNewSessionConnected(SocketSession session)
        {
            Console.WriteLine("新的连接地址为" + session.LocalEndPoint.Address.ToString() + ",时间为" + DateTime.Now);
            base.OnNewSessionConnected(session);
        }
    }
}

6.创建命令处理类。

using SuperSocket.SocketBase.Command;
using SuperSocket.SocketBase.Protocol;
using System;

namespace TelnetDemo
{
    public class AddItem_Command : CommandBase<SocketSession, StringRequestInfo>
    {
        public override void ExecuteCommand(SocketSession session, StringRequestInfo requestInfo)
        {
            if (requestInfo.Parameters.Length == 2)
            {
                Console.WriteLine("调用成功");
                session.Send("已经成功接收到你的请求\r\n");
            }
            else
            {
                session.Send("参数不正确\r\n");
            }
        }
        public override string Name
        {
            get { return "AddItem"; }
        }
    }
}

 

posted @ 2021-10-29 17:56  wssw  阅读(944)  评论(0编辑  收藏  举报