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; }