QListenSocket类的实现:
#include "QListenSocket.h" #include <QTcpSocket> #include <QDebug> /*********************************************************************************************** *函数名 : QListenSocket *函数功能描述 : 析构函数 *函数参数 : 无 *函数返回值 : 无 *作者 : nelson *函数创作日期 : 2016/3/3 *函数修改日期 : *修改人 : *修改原因 : *版本 : 1.0 *历史版本 : 无 ***********************************************************************************************/ QListenSocket::QListenSocket(QObject *parent,int port):QTcpServer(parent) { listen(QHostAddress::Any,port); } /*********************************************************************************************** *函数名 : incomingConnection *函数功能描述 : 析构函数 *函数参数 : 无 *函数返回值 : 无 *作者 : nelson *函数创作日期 : 2016/3/3 *函数修改日期 : *修改人 : *修改原因 : *版本 : 1.0 *历史版本 : 无 ***********************************************************************************************/ void QListenSocket::incomingConnection(int socketDescriptor) { QClientThread *tmp =new QClientThread(socketDescriptor,this); connect(tmp,SIGNAL(clientExit(QThread *)),this,SLOT(deleteClient(QThread *))); ClientList.append(tmp); tmp->start(); } /*********************************************************************************************** *函数名 : deleteClient *函数功能描述 :客户端退出的槽函数 *函数参数 : 无 *函数返回值 : 无 *作者 : nelson *函数创作日期 : 2016/3/3 *函数修改日期 : *修改人 : *修改原因 : *版本 : 1.0 *历史版本 : 无 ***********************************************************************************************/ void QListenSocket::deleteClient(QThread *clt) { QClientThread *tmp = (QClientThread *)clt; int ret = ClientList.indexOf(tmp); if(ret != -1) { ClientList.removeAt(ret); } //qDebug()<<"CLIENT COUNT"<<ClientList.count(); delete tmp; }