infocenterserver.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "infocenterserver.h"
  2. InfoCenterServer::InfoCenterServer(QObject *parent) : QTcpServer(parent)
  3. {
  4. // clientList.clear();
  5. }
  6. void InfoCenterServer::start()
  7. {
  8. if(!listen(QHostAddress::Any,6002)){
  9. printf("listen 6002 failed\n");
  10. this->appendData("listen 6002 failed");
  11. exit(1);
  12. }else{
  13. printf("listen on 6002\n");
  14. this->appendData("listen on 6002");
  15. }
  16. }
  17. void InfoCenterServer::incomingConnection(qintptr socketDescriptor)
  18. {
  19. printf("new incoming\n");
  20. this->appendData("incomingConnection");
  21. InfoClient *client = new InfoClient(socketDescriptor,this);
  22. // clientList.append(client);
  23. // connect(client,&InfoClient::write_error,this,&InfoCenterServer::write_error);
  24. connect(client,&InfoClient::sendlog,this,&InfoCenterServer::receivelog);
  25. // printf("InfoCenterServer::incomingConnection clientList.size() = %d\n",clientList.size());
  26. // this->appendData(QString("InfoCenterServer::incomingConnection clientList.size() = %1").arg(clientList.size()));
  27. //线程结束,退出,但是没有清除clientList对应的client操作 导致没有指向的指针,内存泄露
  28. connect(client,&InfoClient::finished,client,&InfoClient::quit);
  29. client->start();
  30. }
  31. void InfoCenterServer::receivelog(QString recelog)
  32. {
  33. this->appendData(recelog);
  34. }
  35. void InfoCenterServer::appendData(QString emitlog)
  36. {
  37. emit weblog(emitlog);
  38. }
  39. void InfoCenterServer::write_error()
  40. {
  41. // this->appendData("enter into InfoCenterServer::write_error()");
  42. // InfoClient *pClient = qobject_cast<InfoClient *>(sender());
  43. // QList<InfoClient *>::iterator i;
  44. // for(i=clientList.begin();i!=clientList.end();i++){
  45. // InfoClient *client = *i;
  46. // if(client==pClient){
  47. // clientList.removeAll(client);
  48. // client->deleteLater();
  49. // }
  50. // }
  51. // printf("InfoCenterServer::write_error() clientList.size() = %d\n",clientList.size());
  52. // this->appendData(QString("InfoCenterServer::write_error() clientList.size() = %1").arg(clientList.size()));
  53. }