• SuperSocket 2.0学习01:一个Telnet示例


    官方学习资料:一个Telnet示例

    本文开发环境:Win10 + VS2019 + .NetCore 3.1 + SuperSocket 2.0.0-beta.8

    Gitee:SuperSocketV2Sample

    1、创建项目

    使用VS2019创建一个.NetCore控制台程序,目标框架选择.NET Core 3.1。

    2、引入SuperSocket类库

    使用NuGet工具搜索SuperSocket(需要勾选“包括预发行版”),选择最新的版本(目前是2.0.0-beta.8)安装。

    3、TelnetServer代码

    using Microsoft.Extensions.Hosting;
    using Microsoft.Extensions.Logging;
    using SuperSocket;
    using SuperSocket.ProtoBase;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace SuperSocketV2Sample.TelnetServer
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                //创建宿主:用Package的类型和PipelineFilter的类型创建SuperSocket宿主。
                var host = SuperSocketHostBuilder.Create<StringPackageInfo, CommandLinePipelineFilter>()
                    //注册用于处理接收到的数据的包处理器
                    .UsePackageHandler(async (session, package) =>
                    {
                        var result = 0;
                        switch (package.Key.ToUpper())
                        {
                            case ("ADD"):
                                result = package.Parameters
                                    .Select(t => int.Parse(t))
                                    .Sum();
                                break;
    
                            case ("SUB"):
                                result = package.Parameters
                                    .Select(t => int.Parse(t))
                                    .Aggregate((x, y) => x - y);
                                break;
    
                            case ("MULT"):
                                result = package.Parameters
                                    .Select(t => int.Parse(t))
                                    .Aggregate((x, y) => x * y);
                                break;
                        }
    
                        //发送消息给客户端
                        await session.SendAsync(Encoding.UTF8.GetBytes(result.ToString() + "
    "));
                    })
                    //配置服务器如服务器名和监听端口等基本信息
                    .ConfigureSuperSocket(options =>
                    {
                        options.Name = "Echo Server";
                        options.Listeners = new[]
                        {
                            new ListenOptions
                            {
                                Ip = "Any",
                                Port = 4040
                            }
                        }.ToList();
                    })
                    //配置日志
                    .ConfigureLogging((hostCtx, loggingBuilder) =>
                    {
                        loggingBuilder.AddConsole();
                    })
                    .Build();
                await host.RunAsync();
            }
        }
    }

    4、测试TelnetServer

    在控制台中使用下面命令连接并测试TelnetServer。

    telnet 127.0.0.1 4040

  • 相关阅读:
    hdu--4027--不错的线段树
    hdu--3275--线段树<again>
    hdu--2795--又是线段树
    hdu--4407--一不留神就TLE了
    zoj--3822--第二题概率dp
    hdu--3911--线段树<我最近爱上她了>
    hdu--1710--二叉树的各种遍历间的联系
    hdu--1712--分组背包<如果你真的明白了背包..>
    hdu--4576--概率dp<见过最简单的概率dp>
    list remove object
  • 原文地址:https://www.cnblogs.com/xhubobo/p/14606277.html
Copyright © 2020-2023  润新知