12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include "infocenterserver.h"
- InfoCenterServer::InfoCenterServer(QObject *parent) : QTcpServer(parent)
- {
- // clientList.clear();
- }
- void InfoCenterServer::start()
- {
- if(!listen(QHostAddress::Any,6002)){
- printf("listen 6002 failed\n");
- this->appendData("listen 6002 failed");
- exit(1);
- }else{
- printf("listen on 6002\n");
- this->appendData("listen on 6002");
- }
- }
- void InfoCenterServer::incomingConnection(qintptr socketDescriptor)
- {
- printf("new incoming\n");
- this->appendData("incomingConnection");
- InfoClient *client = new InfoClient(socketDescriptor,this);
- // clientList.append(client);
- // connect(client,&InfoClient::write_error,this,&InfoCenterServer::write_error);
- connect(client,&InfoClient::sendlog,this,&InfoCenterServer::receivelog);
- // printf("InfoCenterServer::incomingConnection clientList.size() = %d\n",clientList.size());
- // this->appendData(QString("InfoCenterServer::incomingConnection clientList.size() = %1").arg(clientList.size()));
- //线程结束,退出,但是没有清除clientList对应的client操作 导致没有指向的指针,内存泄露
- connect(client,&InfoClient::finished,client,&InfoClient::quit);
- client->start();
- }
- void InfoCenterServer::receivelog(QString recelog)
- {
- this->appendData(recelog);
- }
- void InfoCenterServer::appendData(QString emitlog)
- {
- emit weblog(emitlog);
- }
- void InfoCenterServer::write_error()
- {
- // this->appendData("enter into InfoCenterServer::write_error()");
- // InfoClient *pClient = qobject_cast<InfoClient *>(sender());
- // QList<InfoClient *>::iterator i;
- // for(i=clientList.begin();i!=clientList.end();i++){
- // InfoClient *client = *i;
- // if(client==pClient){
- // clientList.removeAll(client);
- // client->deleteLater();
- // }
- // }
- // printf("InfoCenterServer::write_error() clientList.size() = %d\n",clientList.size());
- // this->appendData(QString("InfoCenterServer::write_error() clientList.size() = %1").arg(clientList.size()));
- }
|