博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SuperSocket内置的命令行协议
阅读量:5231 次
发布时间:2019-06-14

本文共 1149 字,大约阅读时间需要 3 分钟。

内置的命令行协议(接受自定义,分隔符为“:”,“,”):

命令行协议定义了每个请求必须以回车换行结尾 "\r\n"。

 

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

 

"LOGIN kerry 123456" + NewLine

 

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

 

Key: "LOGIN"

Body: "kerry 123456";

Parameters: ["kerry", "123456"]

 

SuperSocket 提供了一些通用的协议解析工具, 你可以用他们简单而且快速的实现你自己的通信协议

 

"TerminatorReceiveFilterFactory":一个协议使用两个字符 "##" 作为结束符

 

“CountSpliterReceiveFilter”: 有些协议定义了像这样格式的请求 "#part1#part2#part3#part4#part5#part6#part7#". 每个请求有7个由 '#' 分隔的部分. 这种协议的实现非常简单:

 

“FixedSizeReceiveFilter”:在这种协议之中, 所有请求的大小都是相同的。如果你的每个请求都是有9个字符组成的字符串,如"KILL BILL", 你应该做的事就是想如下代码这样实现一个接收过滤器(ReceiveFilter):

 

“BeginEndMarkReceiveFilter”:在这类协议的每个请求之中 都有固定的开始和结束标记。例如, 我有个协议,它的所有消息都遵循这种格式 "!xxxxxxxxxxxxxx$"。因此,在这种情况下, "!" 是开始标记, "$" 是结束标记,于是你的接受过滤器可以定义成这样:

 

“FixedHeaderReceiveFilter”:这种协议将一个请求定义为两大部分, 第一部分定义了包含第二部分长度等等基础信息. 我们通常称第一部分为头部.

例如, 我们有一个这样的协议: 头部包含 6 个字节, 前 4 个字节用于存储请求的名字, 后两个字节用于代表请求体的长度:

 

你需要基于类FixedHeaderReceiveFilter实现你自己的接收过滤器.

然后你就可以使用接收或者自己定义的接收过滤器工厂来在 SuperSocket 中启用该协议.

在.NET中的反射也可以实现从对象的外部来了解对象(或程序集)内部结构的功能,哪怕你不知道这个对象(或程序集)是个什么东西,另外.NET中的反射还可以运态创建出对象并执行它

转载于:https://www.cnblogs.com/fanweisheng/p/11126631.html

你可能感兴趣的文章
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
Maximum Product Subarray
查看>>
[转载] MySQL的四种事务隔离级别
查看>>
QT文件读写
查看>>
C语言小项目-火车票订票系统
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
[LintCode] 462 Total Occurrence of Target
查看>>
springboot---redis缓存的使用
查看>>
架构图-模型
查看>>
黑马程序员_Java基础枚举类型
查看>>
一位90后程序员的自述:如何从年薪3w到30w!
查看>>