wechartthreads.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "wechartthreads.h"
  2. WechartThreads::WechartThreads(QObject *parent, quint16 idx, QString ip, QString path) :
  3. QThread(parent)
  4. {
  5. Idx = idx;
  6. DestIp = ip;
  7. DestPath = path;
  8. DataList.clear();
  9. }
  10. void WechartThreads::appendData(QString data)
  11. {
  12. QString Data = QString("POST %1 HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept: */*\r\nConnection: keep-alive\r\nCache-Control: no-cache\r\nContent-Length: %2\r\nAccept-Encoding: gzip\r\nAccept-Language: zh-CN,en,*\r\nUser-Agent: Mozilla/5.0\r\nHost: %3\r\n\r\n%4")
  13. .arg(DestPath).arg(data.length()).arg("iot.usky.cn").arg(data);
  14. DataList.append(Data);
  15. }
  16. void WechartThreads::stopwx()
  17. {
  18. keepWorking = false;
  19. }
  20. //void WechartThreads::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag){
  21. // if(dirflag)
  22. // printf("[ %04d-%02d-%02d %02d:%02d:%02d >>> ] %s\n",
  23. // t.date().year(),t.date().month(),t.date().day(),
  24. // t.time().hour(),t.time().minute(),t.time().second(),
  25. // data.toUtf8().data());
  26. // else
  27. // printf("[ %04d-%02d-%02d %02d:%02d:%02d <<< ] %s\n",
  28. // t.date().year(),t.date().month(),t.date().day(),
  29. // t.time().hour(),t.time().minute(),t.time().second(),
  30. // data.toUtf8().data());
  31. //}
  32. void WechartThreads::run()
  33. {
  34. quint8 cur;
  35. for(int i=0;i<16;i++){
  36. so[i] = new QTcpSocket;
  37. }
  38. keepWorking = true;
  39. cur=0;
  40. while(keepWorking){
  41. if(DataList.length()>0){
  42. QString data = DataList.first();
  43. so[cur]->connectToHost(QHostAddress(DestIp),80,QIODevice::ReadWrite);
  44. if(so[cur]->waitForConnected()){
  45. so[cur]->write(data.toUtf8());
  46. so[cur]->flush();
  47. // emit wxchart(Idx,QDateTime::currentDateTime(),data,true);
  48. DataList.removeFirst();
  49. if(so[cur]->waitForReadyRead()){
  50. QByteArray ret = so[cur]->readAll();
  51. if(ret.length()>512)
  52. ret = ret.mid(0,512);
  53. // emit wxchart(Idx,QDateTime::currentDateTime(),QString(ret),false);
  54. so[cur]->close();
  55. }else{
  56. // emit wxchart(Idx,QDateTime::currentDateTime(),QString("timeout"),false);
  57. so[cur]->abort();
  58. }
  59. }
  60. cur++;
  61. cur &= 0x0f;
  62. }
  63. usleep(100000);
  64. }
  65. for(int i=0;i<16;i++){
  66. if(so[i]->isOpen())
  67. so[i]->abort();
  68. so[i]->deleteLater();
  69. }
  70. }