QT通讯过程中多个窗口只需要一个套接字的解决方法,简单实用好理解

在进行tcp通讯过程中,需要客户端与服务器互联,客户端有很多窗口,但是需要多个客户端连接的话,如果不采取点措施,就需要每个地方都采取如下代码连接一次:


    QString ip = ui->lineEdit->text();
    int port = ui->lineEdit_2->text().toInt();
    client->abort();
    client->connectToHost(ip,port);

不过现在我目前想到的一个方法就是只需要一个socket套接字就可以使所有的客户端都可以连接到服务器,首先加载一个tcpsocket.h,里面代码如下:

#ifndef TCPSOCKET_H
#define TCPSOCKET_H
#include 
#endif // TCPSOCKET_H

tcpsocket.cpp代码如下

#include "tcpsocket.h"
#include 
QTcpSocket *AllSocket ;

在连接之后生成的套接字赋值给定义的 QTcpSocket *AllSocket指针:

 connect(client,&QTcpSocket::connected, 
            [=]()                               
    {
        AllSocket = client ;   //连接套接字传给AllSocket指针
    }
    );

每次用的时候只需要在主函数前定义一下即可:

extern QTcpSocket *AllSocket ;  //测试定义的QTcpSocket地址

你可能感兴趣的:(多个客户端共用一个socket,qt,tcpip,socket)