天天看点

QT,QTcpsocket。一个客户端,同时接收多个服务端数据,并显示

1.项目需求:

一个客户端,需要从多个站点接收数据,进行保存并显示。站点可动态添加、删除。

2.遇到问题:

a.需要动态添加站点(new QTcpSocket Connect),进行连接,获取数据;

b.连接成功,但接收不到数据。

3.解决方法:

其他代码略。见主要方法:

void ThunderGather::onNewTCPConnect(QString tcpString)

{

    QStringList tcpList=tcpString.split(',');//从界面接收IP、Port;

    QTcpSocket *tcpSocket1 = new QTcpSocket(this);

    tcpSocket1->connectToHost(tcpList.at(0),tcpList.at(1).toUInt());

    connect(tcpSocket1, SIGNAL(readyRead()), this, SLOT(readNewTcpData()));

    ......

}

void ThunderGather::readNewTcpData()

{

    QTcpSocket *socket = qobject_cast<QTcpSocket*>(sender());

    QByteArray datagram = socket->readAll();

    processTheDatagram(datagram);//具体处理流程

}

继续阅读