网游编程通信设计笔记-------boost版

来源:互联网 发布:云端软件库 编辑:程序博客网 时间:2024/04/28 10:21

         在网络通信这一块,怎么设计通信协议和如何处理数据包?


         1.通信协议。这个建议先将数据流序列化在传输,好处和坏处就不多讨论了。然后就是数据包内容,数据包的第一个字段

应该是这个包的长度。因为服务端接受数据包的时候,是需要知道接受的数据包的长度然后才能对数据进行解析处理,不然数据

接收到了一半或者接收到了两个包,都是会破坏数据的。有了长度信息,就能够准确定位数据了。至于数据的具体内容,可以自定义

格式。可以采用Json xml等等,如果有安全需求就自己加密。


        2.怎么处理数据包,或者说服务端的处理流程是啥?

        1.主线程负责接收客户端建立连接的请求,收到一个就建立一个连接,并新建一个线程去处理这个连接。

        2.处理连接的线程在建立连接后开始接收客户端发送过来的数据,先读取前几个字节获得长度,具体几个字节自己定义。

然后就可以收取数据,收取到指定字节的数据后开始处理逻辑。处理完逻辑后开始接收下一个包。你可能会说这不就变成单线程了么,

为什么不并发接收数据呢?这主要是为了简化逻辑处理,如果逻辑要考虑并发的话,需要实时考虑加锁解锁,这实际上是很费事的。

0 0
原创粉丝点击