zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python——极限编程
    RPC是什么?科普一下
    缓存在高并发场景下的常见问题
    如何提高缓存命中率
    数据库性能优化的误区
    缓存在大型网站架构中的应用
    APP多版本共存,服务端如何兼容?
    水平分库分表的关键问题及解决思路
    分库分表的几种常见玩法及如何解决跨库查询等问题
    分布式系统事务一致性解决方案
  • 原文地址:https://www.cnblogs.com/xhubobo/p/14606277.html
Copyright © 2011-2022 走看看