逐步实现TCP服务端Step03-10:封装Message类

基层工作由MessageHead,Codec和MessageBody负责完成。Message类构建于它们之上。

  • Encode:这是编码操作的总入口 ...


逐步实现TCP服务端Step03-9:MessageBody的使用及改进

假设我们设计了一组向server请求账号信息的消息,格式如下:

消息首部不展开说明。client向server发送request消息,告诉server待查询账号的ID,以及能证明client已登陆的token ...


逐步实现TCP服务端Step03-8:封装MessageBody类

MessageBody是消息体类,通过继承Codec类,获得Encode/Decode能力。现实中会存在各种各样的消息(体),MessageBody显然是它们的一般形式。

MessageBody具备了编解码能力,但具体编解什么内容,需要在具体的消息体里完成。这样的话,具体的消息体中应该有两个方法用于启动编解码操作,比如StartEncode、StartDecode ...


逐步实现TCP服务端Step03-7:封装Codec类

Codec提供了一套Encode/Decode方法供MessageBody使用。MessageHead类并未使用Codec提供的服务,而是内置了Encode/Decode方法。消息头与消息体不同,消息头是公共部分,不会轻易改变,消息体则与具体的业务相关,结构不固定,应把他俩区别处理。

对于消息体的多样性,可以通过重载’<<‘和’>>’运算符来实现Encode/Decode,编解码时直接在运算符后面追加字段就行了。

属性 ...


逐步实现TCP服务端Step03-6:封装MessageHead类

与消息相关的几个类中,MessageHead是相对比较简单的。它维护消息首部的各字段,提供对这些字段的Encode和Decode方法。

首部中应该设定哪些字段呢?消息ID是必须的,然后是消息类型。如果只讨论client与server之间的消息交互的话,只要这两个字段就够了。但实际上,server与server之间也会发生通信,有时候还需要某个机构把来自某个server的消息转发给另一个指定的server ...


逐步实现TCP服务端Step03-5:与Message相关的类

目前与消息相关的有如下三个东西,一个结构和两个函数,现在要做的是把它们组装到一起。

从上图可知 ...