• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Cpper
            C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

            具體如下代碼,不贅述
            #ifndef WEBTIMEGET_H
            #define WEBTIMEGET_H
            #include 
            <QString>
            #include 
            <QVector>
            #include 
            <QObject>
            #include 
            <QDateTime>
            #include 
            <QtNetwork/QUdpSocket>

            class webTimeGetter : public QObject
            {
                Q_OBJECT
            public:        
                webTimeGetter();
                
            virtual ~webTimeGetter();
            public slots:    
                
            void readingData();
                
            void connectSucess();   
                
            void tryGet();
            private:    
                QVector
            <QString> hostList;
                QUdpSocket
            *      udpsocket;
                QDateTime        time;
            };

            #endif
            //! ccsdu2004

            #include <iostream>
            #include 
            "webTimeGetter.h"

            webTimeGetter::webTimeGetter()
            {
                hostList.push_back(
            "time.windows.com");
                hostList.push_back(
            "time.nist.gov");
                udpsocket 
            = new QUdpSocket(this);
                connect(udpsocket,SIGNAL(connected()),
            this,SLOT(connectSucess()));
                connect(udpsocket,SIGNAL(readyRead()),
            this,SLOT(readingData()));
            }

            webTimeGetter::
            ~webTimeGetter()
            {
            }

            void webTimeGetter::readingData()
            {
                QByteArray newTime;
                QDateTime epoch(QDate(
            190011));
                QDateTime unixStart(QDate(
            197011));
                
            do
                {
                    newTime.resize(udpsocket
            ->pendingDatagramSize());
                    udpsocket
            ->read(newTime.data(), newTime.size());
                }
            while(udpsocket->hasPendingDatagrams());
                QByteArray TransmitTimeStamp ;
                TransmitTimeStamp
            =newTime.right(8);
                quint32 seconds
            =TransmitTimeStamp[0];
                quint8 temp
            =0;
                
            for(int j=1;j<=3;j++)
                {
                    seconds
            =seconds<<8;
                    temp
            =TransmitTimeStamp[j];
                    seconds
            =seconds+temp;
                }
                
                time.setTime_t(seconds
            -epoch.secsTo(unixStart));
                std::cout
            <<time.date().year()<<std::endl;
                std::cout
            <<time.date().month()<<std::endl;
                std::cout
            <<time.date().day()<<std::endl;
                std::cout
            <<time.time().hour()<<std::endl;
                std::cout
            <<time.time().minute()<<std::endl;
                
                udpsocket
            ->disconnectFromHost();
                udpsocket
            ->close();
            }

            void webTimeGetter::connectSucess()
            {
                qint8 LI
            =0;
                qint8 VN
            =3;
                qint8 MODE
            =3;
                qint8 STRATUM
            =0;
                qint8 POLL
            =4;
                qint8 PREC
            =-6;
                QDateTime epoch(QDate(
            1900,1,1));
                qint32 second
            =quint32(epoch.secsTo(QDateTime::currentDateTime()));
                qint32 temp
            =0;
                QByteArray timeRequest(
            480);
                timeRequest[
            0]=(LI <<6| (VN <<3| (MODE);
                timeRequest[
            1]=STRATUM;
                timeRequest[
            2]=POLL;
                timeRequest[
            3]=PREC & 0xff;
                timeRequest[
            5]=1;
                timeRequest[
            9]=1;
                timeRequest[
            40]=(temp=(second&0xff000000)>>24);
                temp
            =0;
                timeRequest[
            41]=(temp=(second&0x00ff0000)>>16);
                temp
            =0;
                timeRequest[
            42]=(temp=(second&0x0000ff00)>>8);
                temp
            =0;
                timeRequest[
            43]=((second&0x000000ff));
                udpsocket
            ->flush();
                udpsocket
            ->write(timeRequest);
                udpsocket
            ->flush();
            }   

            void webTimeGetter::tryGet()
            {
                udpsocket
            ->connectToHost(hostList.at(0),123);
            }
            posted @ 2012-07-24 22:42 ccsdu2009 閱讀(2610) | 評論 (0)編輯 收藏
             
            有2種辦法
            第一種是
            針對輸入的數據n bite數據A,B比如short類型
            If both A and B are negative Y = A + B - (A * B / (-(2 pow(n-1) -1))) 
            Else Y = A + B - (A * B / (2 pow(n-1))
            另外一種辦法是采用時間片交替的方式
            posted @ 2012-06-05 19:15 ccsdu2009 閱讀(1220) | 評論 (0)編輯 收藏
             

            Microsoft Visual Studio 2005 Team Suite 簡體中文版 序列號 注冊碼

            序列號:KYTYH-TQKW6-VWPBQ-DKC8F-HWC4J  (可用)

             

            添加/刪除程序 - Microsoft Visual Studio 2005 Team Suite 簡體中文版 - 卸載 - 下一步 - KYTYH-TQKW6-VWPBQ-DKC8F-HWC4J  - 升級。

             

            posted @ 2012-06-03 11:08 ccsdu2009 閱讀(692) | 評論 (0)編輯 收藏
             
            typedef struct RingBuffer RingBuffer;

            RingBuffer
            * RingBufferCreate(int sizeOf,int length);
            void        RingBufferDestroy(RingBuffer* ring);
            int         RingBufferWrite(RingBuffer* ring,const char* data,int len);
            int         RingBufferRead(RingBuffer* ring,char* data,int len);

            struct RingBuffer 
            {
                
            char* mem;
                
            int   sizeOf;
                
            int   length;
                
            int   writePos;
                
            int   full;
            };

            RingBuffer
            * RingBufferCreate(int sizeOf,int length)
            {
                RingBuffer 
            *ring = (RingBuffer*)calloc(1,sizeof(*ring));
                
            if(ring)
                {
                    ring
            ->sizeOf = sizeOf;
                    ring
            ->length = length;
                    ring
            ->writePos = 0;
                    ring
            ->full = 0;
                    ring
            ->mem = (char*)malloc(ring->length * ring->sizeOf);
                    
            if(!ring->mem)
                    {
                        free(ring);
                        ring 
            = 0;
                    }
                }
                
            return ring;
            }

            void RingBufferDestroy(RingBuffer* ring)
            {
                
            if(ring)
                {
                    free(ring
            ->mem);
                    free(ring);
                }
            }

            int  RingBufferRead(RingBuffer* ring,char* data,int len)
            {   
                
            if(ring->full == 1)
                {
                    
            if(len > ring->length)
                        len 
            = ring->length;
                    memcpy(data,ring
            ->mem,len*ring->sizeOf); 
                    ring
            ->full = 0;
                }
                
            if(ring->writePos < len)
                {   
                    ring
            ->full = 0;
                    
            int ret = ring->writePos;
                    ring
            ->writePos = 0;
                    memcpy(data,ring
            ->mem,ring->writePos*ring->sizeOf);
                    
            return ret;
                }
                
            else
                {   
                    ring
            ->full = 0;
                    memcpy(data,ring
            ->mem,len*ring->sizeOf);
                    ring
            ->writePos -= len;
                    memcpy(ring
            ->mem,ring->mem + len*ring->sizeOf,ring->writePos*ring->sizeOf);
                    
            return len;
                }
            }

            int RingBufferWrite(RingBuffer* ring,const char* data,int len)
            {
                
            if(len + ring->writePos > ring->length)
                    ring
            ->full = 1;
                
            int ret = len >= ring->length ? ring->length : len;  
                
            if(len >= ring->length)    
                {
                    memcpy(ring
            ->mem,data + (ring->length-ring->length%len)*ring->sizeOf,ring->length*ring->sizeOf);
                    ring
            ->writePos = ring->length;
                }
                
            else if(len + ring->writePos <= ring->length)
                {    
                    memcpy(ring
            ->mem + ring->writePos*ring->sizeOf,data,len*ring->sizeOf);
                    ring
            ->writePos += len;
                }
                
            else 
                {
                    memcpy(ring
            ->mem,ring->mem + (len + ring->writePos - ring->length)*ring->sizeOf,(len + ring->writePos - ring->length)*ring->sizeOf);
                    memcpy(ring
            ->mem + (len + ring->writePos - ring->length)*ring->sizeOf,data,len*ring->sizeOf);
                    ring
            ->writePos = ring->length;
                }     
                
            return ret;
            }
            posted @ 2012-06-02 19:15 ccsdu2009 閱讀(825) | 評論 (0)編輯 收藏
             
            簡單說明 亂碼原因
            QURL的2次連續編碼
            修改方式:
            QUrl encode(const QString& istr)
            {
               QByteArray data;
               data.append(istr);
               
            return QUrl::fromEncoded(data);
            }
            posted @ 2012-05-30 21:29 ccsdu2009 閱讀(2119) | 評論 (0)編輯 收藏
             
            一個小例子:
            class libcurlParser : public QThread
            {
                Q_OBJECT
            public:
                
            static size_t process(void* buffer,size_t size,size_t n,void *user);
                QString html;
            public:
                libcurlParser(QObject 
            *parent= 0);
                
            ~libcurlParser();
            public:
                
            void execute(const QString& url);
            public slots:
                
            void finishSlot();
                
            void timeOut();
            signals:
                
            void finish();
            protected:
                
            void run();
            private:
                CURL
            *  curl;
            };

            size_t libcurlParser::process(void* buffer,size_t size,size_t n,void *user)
            {
                libcurlParser
            * parser = (libcurlParser*)user;
                parser
            ->html += (char*)buffer;
                
            return size*n;
            }

            libcurlParser::libcurlParser(QObject 
            *parent)
                : QThread(parent)
            {   
                connect(
            this,SIGNAL(finish()),this,SLOT(finishSlot()));
                curl 
            = curl_easy_init();
            }

            libcurlParser::
            ~libcurlParser()
            {    
                curl_easy_cleanup(curl);
            }

            void libcurlParser::execute(const QString& url)
            {   
                html.clear();
                curl_easy_setopt(curl,CURLOPT_URL,url.toAscii().data());
                curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,
            &process);
                curl_easy_setopt(curl,CURLOPT_WRITEDATA,
            this);
                start();
            }

            void libcurlParser::run()
            {   
                CURLcode code 
            = curl_easy_perform(curl);
                std::cout
            <<"exe:"<<"code"<<std::endl;
                emit finish();
                
            //std::cout<<curl_easy_strerror(code)<<std::endl;
                
            //QTimer::singleShot(0, this, SLOT(timeOut()));
                
            //exec();
            }

            void libcurlParser::finishSlot()
            {
                std::cout
            <<"finishSlot()"<<std::endl;
                QFile file(
            "htm.htm");
                file.open(QIODevice::WriteOnly);
                file.write(html.toLatin1());
                file.close();
            }

            void libcurlParser::timeOut()
            {
                emit finish();
            }
            posted @ 2012-05-27 17:07 ccsdu2009 閱讀(1407) | 評論 (0)編輯 收藏
             
            有時候程序需要顯示二個排列在一起的頂級窗體,并且拖動主窗體次窗體也跟著移動
            其實現如下:
            1.保持窗體并列顯示在一起
                QPoint pos = this->pos();
                QSize  size 
            = this->size();
                
            int x = pos.x() + size.width() + 8;
                
            int y = pos.y();
                widget1
            ->move(x,y);
            2.移動主窗體,次窗體也跟著移動
            這個需要重載函數moveEvent
            void window::moveEvent(QMoveEvent *event)
            {
                onMove();    
                QWidget::moveEvent(
            event);
            }
            posted @ 2012-05-20 12:28 ccsdu2009 閱讀(616) | 評論 (0)編輯 收藏
             
            QT中使用信號和槽的注意事項

            只能使用本對象的信號,不能使用基類的
            但是可以使用基類的槽,而不一定要使用本對象的
            違反的話 可能會出現導致程序退出的問題
            posted @ 2012-05-13 12:42 ccsdu2009 閱讀(491) | 評論 (0)編輯 收藏
             
            在QThread中使用QNetworkAccessManager,需要注意的是:
            在run()函數中需要調用exec()
            這樣才能保證線程消息隊列不退出
            然后在必要的地方調用quit即可退出
            posted @ 2012-05-09 19:47 ccsdu2009 閱讀(1168) | 評論 (0)編輯 收藏
             
            在QLineEidt上按回車會發送一個消息returnPressed();
            接受此消息即可
            posted @ 2012-05-06 14:47 ccsdu2009 閱讀(2775) | 評論 (0)編輯 收藏
            僅列出標題
            共38頁: First 12 13 14 15 16 17 18 19 20 Last 
             
            久久99精品久久久大学生| 久久综合成人网| 漂亮人妻被黑人久久精品| 久久久久亚洲av无码专区喷水 | 久久久国产乱子伦精品作者| www.久久热.com| 久久毛片免费看一区二区三区| 大香伊人久久精品一区二区| 久久夜色精品国产欧美乱| 国产精品成人99久久久久91gav| 国产69精品久久久久APP下载 | 2020久久精品国产免费| 久久亚洲中文字幕精品一区| 无码超乳爆乳中文字幕久久| 久久精品国产只有精品66| 久久久久99精品成人片直播| 亚洲婷婷国产精品电影人久久| 久久亚洲精品中文字幕三区| 亚洲AV日韩AV永久无码久久| 久久国产成人精品国产成人亚洲| 奇米综合四色77777久久| 久久久www免费人成精品| 日韩电影久久久被窝网| 色综合合久久天天综合绕视看| 久久久久人妻一区精品性色av| 思思久久99热免费精品6| 国产精品狼人久久久久影院| 色综合合久久天天综合绕视看| 成人久久综合网| 国内精品久久久久影院免费| 久久亚洲私人国产精品vA| 久久精品国产精品亚洲精品| 久久这里有精品| 中文字幕久久亚洲一区| 久久精品国产欧美日韩99热| 日日狠狠久久偷偷色综合0 | 日韩欧美亚洲综合久久影院Ds | 久久综合久久美利坚合众国| 亚洲精品无码久久久| 国产一区二区久久久| 久久亚洲国产精品成人AV秋霞 |