关于QT实现多线程服务器

来源:互联网 发布:java用正则表达式 编辑:程序博客网 时间:2024/04/30 13:28

   最近实习在做一个智能项目,要求在Cotex-A8的linux上用Qt实现一个小型服务器,该服务器有以下功能:

1、检测串口传输过来的数据,存储下来,再通过网络发送到PC机;

2、监测PC机向服务器发送的数据,再发送给串口(好吧。。。串口再发给zigbee,为什么节点不直接用WIFI啊     我的天!!)

3、用户手持的触屏能控制向串口或WIFI发送的数据。。。。

目前的思路是创建三个不同的线程(显然这三个线程之间通信密切。。。)来分别监听串口、网络端口和触屏,分别来相应不同的服务要求。本以为可以直接使用QTcpServer提供的多线程机制,直接改写虚函数incommingConnecte()函数,后来发现,这种方法适用于服务器监听的都是socket的场合,而这个项目中只有在一个端口是检测的socket,所以QT封装好的服务器线程机制在这里使用并不占优势,还不如直接在一个线程中监听指定的那个端口;串口的监听实现起来也不是很麻烦,触屏的更不用说。现在的问题是,如果服务器已经接受到了来自串口的数据,这个时候要去发送到网络端口,但客户机是不知道服务器已经接收到了串口来的数据,不会恰巧在串口接收到数据后去连接服务器然后让服务器发送数据给客户机。就算这时候客户机连接了服务器,但这监听串口端的线程不是在同一个线程,这里面又会引发很多的问题。。。头大,先把1、2解决了再说吧。。


持续更新。。。。