123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include "wechartthreads.h"
- WechartThreads::WechartThreads(QObject *parent, quint16 idx, QString ip, QString path) :
- QThread(parent)
- {
- Idx = idx;
- DestIp = ip;
- DestPath = path;
- DataList.clear();
- }
- void WechartThreads::appendData(QString data)
- {
- 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")
- .arg(DestPath).arg(data.length()).arg("iot.usky.cn").arg(data);
- DataList.append(Data);
- }
- void WechartThreads::stopwx()
- {
- keepWorking = false;
- }
- //void WechartThreads::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag){
- // if(dirflag)
- // printf("[ %04d-%02d-%02d %02d:%02d:%02d >>> ] %s\n",
- // t.date().year(),t.date().month(),t.date().day(),
- // t.time().hour(),t.time().minute(),t.time().second(),
- // data.toUtf8().data());
- // else
- // printf("[ %04d-%02d-%02d %02d:%02d:%02d <<< ] %s\n",
- // t.date().year(),t.date().month(),t.date().day(),
- // t.time().hour(),t.time().minute(),t.time().second(),
- // data.toUtf8().data());
- //}
- void WechartThreads::run()
- {
- quint8 cur;
- for(int i=0;i<16;i++){
- so[i] = new QTcpSocket;
- }
- keepWorking = true;
- cur=0;
- while(keepWorking){
- if(DataList.length()>0){
- QString data = DataList.first();
- so[cur]->connectToHost(QHostAddress(DestIp),80,QIODevice::ReadWrite);
- if(so[cur]->waitForConnected()){
- so[cur]->write(data.toUtf8());
- so[cur]->flush();
- // emit wxchart(Idx,QDateTime::currentDateTime(),data,true);
- DataList.removeFirst();
- if(so[cur]->waitForReadyRead()){
- QByteArray ret = so[cur]->readAll();
- if(ret.length()>512)
- ret = ret.mid(0,512);
- // emit wxchart(Idx,QDateTime::currentDateTime(),QString(ret),false);
- so[cur]->close();
- }else{
- // emit wxchart(Idx,QDateTime::currentDateTime(),QString("timeout"),false);
- so[cur]->abort();
- }
- }
- cur++;
- cur &= 0x0f;
- }
- usleep(100000);
- }
- for(int i=0;i<16;i++){
- if(so[i]->isOpen())
- so[i]->abort();
- so[i]->deleteLater();
- }
- }
|