QT tcp server 多线程

来源:互联网 发布:php use找不到 编辑:程序博客网 时间:2024/05/19 20:00
QT 编写一个TCP 协议的Server端,支持多客户端连接,一个连接交由一个线程来处理。

需要用到 QTcpServer  QTcpSocket QThread

QTcpServer  最主要的一个incomingConnection函数说明

由定义就可以知道,当QTcpServer监听到一个可用的连接时,会有一个socket descriptor 。

也就是说服务端监听到一个连接,就会有一个唯一的描述标识,依据这个标识会创建一个QTcpSocket,


可以同客户端进行通信


进一步,一个socket descriptor对应一个线程,在线程里一句socket descriptor创建QTcpSocket。

设计:

1、自定义封装一个server类 继承QTcpServer ,重写void incomingConnection(int socketDescriptor);

2、自定义封装一个serverThread线程类继承QThread ,重写void run();

3、自定义封装一个MySocket类 继承QTcpSocket ,实现收发;

流程:

server ---> serverThread ---> MySocket三者的关联是 socketDescriptor;


server监听到新连接会进入incomingConnection(int socketDescriptor);创建serverThread ,connect();serverThread里创建MySocket实现send receive,然后emit 数据到serverThread;

将UI跟server绑定起来,既可以实现界面的显示及数据发送。