• <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 閱讀(2618) | 評論 (0)編輯 收藏
             
            有2種辦法
            第一種是
            針對輸入的數(shù)據(jù)n bite數(shù)據(jù)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 閱讀(1224) | 評論 (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 閱讀(693) | 評論 (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 閱讀(829) | 評論 (0)編輯 收藏
             
            簡單說明 亂碼原因
            QURL的2次連續(xù)編碼
            修改方式:
            QUrl encode(const QString& istr)
            {
               QByteArray data;
               data.append(istr);
               
            return QUrl::fromEncoded(data);
            }
            posted @ 2012-05-30 21:29 ccsdu2009 閱讀(2121) | 評論 (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 閱讀(1414) | 評論 (0)編輯 收藏
             
            有時候程序需要顯示二個排列在一起的頂級窗體,并且拖動主窗體次窗體也跟著移動
            其實(shí)現(xiàn)如下:
            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.移動主窗體,次窗體也跟著移動
            這個需要重載函數(shù)moveEvent
            void window::moveEvent(QMoveEvent *event)
            {
                onMove();    
                QWidget::moveEvent(
            event);
            }
            posted @ 2012-05-20 12:28 ccsdu2009 閱讀(620) | 評論 (0)編輯 收藏
             
            QT中使用信號和槽的注意事項(xiàng)

            只能使用本對象的信號,不能使用基類的
            但是可以使用基類的槽,而不一定要使用本對象的
            違反的話 可能會出現(xiàn)導(dǎo)致程序退出的問題
            posted @ 2012-05-13 12:42 ccsdu2009 閱讀(492) | 評論 (0)編輯 收藏
             
            在QThread中使用QNetworkAccessManager,需要注意的是:
            在run()函數(shù)中需要調(diào)用exec()
            這樣才能保證線程消息隊(duì)列不退出
            然后在必要的地方調(diào)用quit即可退出
            posted @ 2012-05-09 19:47 ccsdu2009 閱讀(1176) | 評論 (0)編輯 收藏
             
            在QLineEidt上按回車會發(fā)送一個消息returnPressed();
            接受此消息即可
            posted @ 2012-05-06 14:47 ccsdu2009 閱讀(2789) | 評論 (0)編輯 收藏
            僅列出標(biāo)題
            共38頁: First 12 13 14 15 16 17 18 19 20 Last 
             
            日日狠狠久久偷偷色综合0| 国产午夜免费高清久久影院| 999久久久免费国产精品播放| 99久久国产亚洲高清观看2024 | 精品久久久久久国产三级| 久久婷婷五月综合97色直播| 欧美午夜精品久久久久免费视| MM131亚洲国产美女久久| 亚洲а∨天堂久久精品| 国产精品久久久亚洲| 亚洲国产成人久久一区久久| 国产婷婷成人久久Av免费高清| 青草久久久国产线免观| 久久久久一区二区三区| 婷婷久久五月天| 久久国产热这里只有精品| 无码人妻少妇久久中文字幕蜜桃 | 久久婷婷五月综合97色| 久久久久亚洲精品男人的天堂| 久久久久亚洲AV成人片| 久久久久se色偷偷亚洲精品av| 国产精品青草久久久久福利99| 久久综合亚洲欧美成人| 怡红院日本一道日本久久| 欧洲精品久久久av无码电影| 久久频这里精品99香蕉久| 国产亚州精品女人久久久久久 | 国产情侣久久久久aⅴ免费| 久久精品人妻中文系列| 久久久久久免费一区二区三区| 久久久久久九九99精品| 99精品国产综合久久久久五月天| 久久www免费人成看国产片| 久久免费线看线看| 久久成人国产精品二三区| 国产精品久久久久国产A级| 亚洲国产另类久久久精品| 蜜臀久久99精品久久久久久小说| 久久99精品久久久大学生| 久久亚洲中文字幕精品一区| 欧美亚洲国产精品久久|