Linux系统中为Qt项目封装一个udp客户端类
Linux系统中为Qt项目封装一个udp客户端类
一、场景
在日常的Qt项目中,我们常用的就是网络通信协议是TCP/UDP, 对于网络协议,Qt都已经封装好了自己的TCP/UDP类,QTcpSocket/QUdpSocket,这些类非常的好用,也非常的易用。
这些类继承自QAbstractSocket,而QAbstractSocket类又继承自QIODevice。接口的封装都很友好也易用。但是Qt是跨平台的,为了兼容不同的平台,封装的时候难免会做出一些取舍等。对于一些底层的东西封装的时候,肯定是按照Qt自己的需求来的。
二、问题
这就导致在Windows和Linux平台开发Qt的时候,使用UDP作为客户端接收数据的时候,接收方式等可能不是我自己想要的方式,特别是当我接收吞吐量特别大的传输的时候,我想要的是有个循环一直在接收数据。
因为UDP本身就是作为一个不安全的数据报传输协议,具体的UDP概念就不介绍了,大家可以自行百度。我们使用Qt自己的UDP类去接收UDP数据的时候,在传输频率比较快的时候,可能需要更快的取缓存取读取,而不是像QUdpSocket一样,通过信号发出来。
三、解决方案
由于,Qt有个非常友好的地方就是,支持标准的C/C++代码。这就方便我们自己封装标准