比较:窗口通信的不足之处:窗口部件主要处理大量的用户界面信息,当有耗时的处理过程时,会影响数据接收,造成丢帧。
线程通信的好处:通常使用独立的线程负责网络数据的发送和接收,在通过窗口部件进行数据显示,在实时系统同这种应用十分广泛。
基于线程实现UDP数据的收发:
step1:新建窗口程序工程,添加发送数据线程类SendThread和接收数据线程类RecvThread,均继承QThread
step2:单独新建头文件netbuffer.h,在头文件中定义网络数据报文的结构。
#ifndef NETBUFFER_H
#define NETBUFFER_H
namespace NetWork{
//数据报文结构
#pragma pack(push) //保存对齐状态
#pragma pack(4) //设定为4字节对齐状态
struct DataStruct{
unsigned int index;
int hour;
int minute;
int second;
int msec;
};
//数