GBase 8c
其他
文章

GBase 8c前后端协议消息概貌

发表于2023-12-13 14:08:1811次浏览0个评论

所有通讯都是通过一个消息流进行的。消息的第一个字节标识消息类型, 然后后面跟着的四个字节声明消息剩下部分的长度(这个长度包括长度域自身,但是不包括消息类型字节)。 剩下的消息内容由消息类型决定。由于历史原因,客户端发送的最初的消息(启动消息)不包含消息类型字节。
 

 

为了避免失去与消息流的同步,服务器和客户端通常都是把整个消息读取到一个缓冲区里(使用字节计数), 然后才试图处理其内容。这样在处理内容的过程时如果发现错误,就比较容易恢复。 在非常极端的情况下(比如说没有足够的内存缓冲消息),接收端可以使用字节计数来判断它在继续读取消息之前需要跳过多少输入。

反之,服务器和客户端都需要注意决不能发送一条不完整的消息。保证这一点的方法通常是在发送整条信息之前先在一个缓冲区里整理整条消息。 如果在发送或者接受一条消息的中间发生了通讯错误,那么唯一合理的响应是放弃连接,因为恢复消息边界同步的希望很小。

评论

登录后才可以发表评论