Qt5下网络通信粘包算法处理的概要解释
这个名称一看就会让某些同学很头疼,做过编程的都应该深有体会,一旦牵涉到网络传输,不管是文件传输还是简单消息的发送,必然会面临一个问题:
既定协议下的数据粘包和拆包的处理算法
这个应该算是一个老生长谈的问题,但是总有一些同学理解不清楚,今天就这个问题,给大家分享一下,遇到这类问题,在编程的时候应该怎么处理。
明确传输协议
这个很重要,也是你接下来写算法的前提。你只有在清晰的了解了你接下来要写的这个网络传输协议的具体内容,你才能确定你的代码编程思路。
写一个接收的函数,绑定接收消息的信号
针对Qt来说,你需要实现一个网络监听,然后绑定这个socket的事件,一旦有消息过来,就会触发这个信号,然后你在指定的槽函数中进行消息的获取和处理
算法实现
这一步应该算是最核心的一步,废话少说,直接上代码:
协议中一般都会规定,消息有多长,消息的头是什么,消息的校验位是什么等等之类的消息。
你在写代码的时候,一定要清晰的知道你所要实现的这个消息的消息头和消息的长度,这两个是最起码的标志,你要清楚才行。
这个是自己个人在写一个小程序的时候,使用到的一个消息协议,基本的要点都写的很清楚了。主要的点就是需要程序员自己理解清楚你的消息大小是多少,满足了则处理,不满足则继续等待。另外一个要点就是,你要从获取的消息里取出来满足消息协议长度规定的消息出来,并按照网络协议,将其拆包,把消息的明文解出来,基本就OK了