• SuperSocket 学习笔记 --内置的命令行协议


    SuperSocket 学习笔记主要是学习SuperSocket 文档和其框架,给出文档链接地址:http://docs.supersocket.net/v1-6/zh-CN)

    一、协议

      构建一个网络应用程序, 仅仅使用 TCP 还是 UDP 是远远不够的。 因为TCP 和 UDP 是传输层协议。定义了传输层协议是不能让网络的两端进行通信的。需要定义应用层通信协议把接收到的二进制数据转化成你程序能理解的请求。

    二、SuperSocket 中内置的命令行协议

      在SuperSocket 中, 如果没有定义的协议,SuperSocket 将会使用命令行协议, 每个请求必须以回车换行结尾 " "。所有接收到的数据将会翻译成 StringRequestInfo 实例,其定义

    public class StringRequestInfo
    {
        public string Key { get; }
    
        public string Body { get; }
    
        public string[] Parameters { get; }
    
        /*
        Other properties and methods
        */
    }

     SuperSocket 中内置的命令行协议用空格来分割请求的Key和参,因此当客户端发送如下数据到服务器端时:"LOGIN kerry 123456" + NewLine

    服务器将会收到一个 StringRequestInfo 实例,这个实例的属性为:

    Key: "LOGIN"
    Body: "kerry 123456";
    Parameters: ["kerry", "123456"]

    同时定义 "LOGIN" 的命令, 这个命令的 ExecuteCommand 方法将会被执行,服务器所接收到的StringRequestInfo实例也将作为参数传给这个方法

    public class LOGIN : CommandBase<AppSession, StringRequestInfo>
    {
        public override void ExecuteCommand(AppSession session, StringRequestInfo requestInfo)
        {
          
        }
    }

    三、自定义命令行协议

    规则:(1)请求 key 和 body 必须通过字符 ':' 分隔, 而且多个参数被字符 ',' 分隔。 

    (2)代码扩展命令行协议写成:

    (3)深度的定义请求的格式

    基于接口 IRequestInfoParser 来实现一个 RequestInfoParser 类, 然后当实例化 CommandLineReceiveFilterFactory 时传入拟定一个 RequestInfoParser 实例

  • 相关阅读:
    如何理解对象、属性、方法?
    添加超链接,请始终将正斜杠添加到子文件夹
    什么导致table不稳固?
    HTML css和js浏览器兼容问题
    理解前端数据双向绑定原理——Object.defineProperty()
    Js事件传播流程
    移动端开发项目注意事项
    get与post的区别
    Web 页面性能优化与SEO优化
    我的WCF项目系列之二WCF初级应用
  • 原文地址:https://www.cnblogs.com/machenghu/p/6441713.html
Copyright © 2020-2023  润新知