• <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>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數據加載中……

            編譯MQTT C++ Client

            MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發(fā)的即時通訊協議,有可能成為物聯網的重要組成部分。
            該協議支持所有平臺,幾乎可以把所有聯網物品和外部連接起來,被用來當做傳感器和制動器(比如通過Twitter讓房屋聯網)的通信協議。

            MQTT協議是為大量計算能力有限,且工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要特性:
            1、使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應用程序耦合;
            2、對負載內容屏蔽的消息傳輸;
            3、使用 TCP/IP 提供網絡連接;
            4、有三種消息發(fā)布服務質量:
              • “至多一次”,消息發(fā)布完全依賴底層 TCP/IP 網絡。會發(fā)生消息丟失或重復。這一級別可用于如下情況,環(huán)境傳感器數據,丟失一次讀記錄無所謂,因為不久后還會有第二次發(fā)送。
              • “至少一次”,確保消息到達,但消息重復可能會發(fā)生。
              • “只有一次”,確保消息到達一次。這一級別可用于如下情況,在計費系統(tǒng)中,消息重復或丟失會導致不正確的結果。
            5、小型傳輸,開銷很小(固定長度的頭部是 2 字節(jié)),協議交換最小化,以降低網絡流量;
            6、使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制;

            編譯環(huán)境 win10專業(yè)版+vs2017企業(yè)版
            1、安裝cmake,https://cmake.org/download/,直接下載安裝包(msi)

            2、安裝ActivePerl軟件,https://www.activestate.com/activeperl/downloads.用cmd命令行的形式輸入指令進入到安裝目錄,比如安裝在C:\Perl64\下,進入到C:\Perl64\eg目錄,輸入“perl example.pl”, 如果出現如下圖所示的:"Hello from         ActivePerl!",則表示軟件安裝成功。安裝時自動設置環(huán)境變量

            3、安裝openssl,https://www.openssl.org/,解壓縮文件。開始菜單-->Vistual Studio 2017-->x64 Native Tools Command Prompt for VS 2017,進入vs2017的命令行行提示工具,切換到openssl的解壓縮目錄,依次執(zhí)行下面命令行
                perl Configure VC-WIN64 no-asm --prefix=C:\openssl(C:\openssl是openssl的安裝目錄)
                            no-asm,表示不使用匯編,如果你不加上的話,在執(zhí)行nmake命令時會出錯;命令執(zhí)行后控制臺上輸出NOTE: If in doubt, on Unix-ish systems use './config',則表示執(zhí)行命令失敗()
                            如果這條命令執(zhí)行不成,試試這個命令perl Configure VC-WIN64A --perfix=C:\openssl\win64 (還是其存儲路徑),這里使用的是VC-WIN64A這個參數
                ms\do_nasm 
                ms\do_win64a
               nmake  -f  ms\nt.mak(這是靜態(tài)庫,動態(tài)庫是ntdll.mak)
               nmake  -f  ms\nt.mak test(測試命令,如果成功則最后顯示“passed all tests”字樣)
               nmake  -f  ms\nt.mak install 成功則會在C:\openss\win64目錄下生成bin、include、lib、ssl四個文件夾
               如果需要編譯動態(tài)庫,nmake  -f  ms\nt.mak改成動態(tài)庫版本就可以了。
               清除上次OpenSSL動態(tài)庫的編譯,以便重新編譯:nmake -f ms\ntdll.mak clean
             清除上次OpenSSL靜態(tài)庫的編譯,以便重新編譯:nmake -f ms\nt.mak clean
               
               備注:利用openssl生成RSA公私密鑰對。
               在Windows環(huán)境下,打開OPENSSL安裝目錄bin文件下面的openssl.exe。
               生成RSA私鑰:genrsa -out rsa_private_key.pem 1024
               該命令會生成1024位的私鑰
               生成RSA公鑰:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem此時,我們可以看到一個文件名為rsa_public_key.pem的文件,打開它,
              可以看到-----BEGIN PUBLIC KEY-----開頭,-----END PUBLIC KEY-----結尾的沒有換行的字符串,這個就是公鑰
               把RSA私鑰轉換成PKCS8格式:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt
               生成的結果就是PKCS8格式的私鑰

            4、安裝cppunit(cpp單元測試件)下載地址:http://downloads.sourceforge.net/cppunit/cppunit-1.12.1.tar.gz,如果不需要測試可以省略這一步。一般我們編譯cppunit_dll工程,同時產生lib和dll文件
               里面有vc6的工程文件,用vs2017打開,升級工程后,編譯容易出現MSB3073的錯誤,編譯完成后,copy的時候提示找不到文件。需要做如下修改

            (1)General\TargetName中,$(ProjectName)-->$(ProjectName)d,而cppunit_dll工程比較特殊,它需要在cppunitd_dll中間加"d",沒辦法使用$(ProjectName),可直接寫為cppunitd_dll

            (2)Linker\General\Output Files中,DebugDll\cppunit_dll.dll-->DebugDll\$(TargetName)$(TargetExt)

            (3)Linker\Advanced\Import Libraries中,.\DebugDll\cppunit_dll.lib-->.\DebugDll\$(TargetName).lib

            (4)PostBuild Event\Command Line中:改為:

                   copy "$(TargetPath)" ..\..\lib\$(TargetName)$(TargetExt)

                   copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib

            5、官網c++Mqtt Client 地址https://github.com/eclipse/paho.mqtt.cpp
               使用git下載git clone https://github.com/eclipse/paho.mqtt.cpp,進入剛剛下載的paho.mqtt.cpp文件中,將mqtt的c的源碼包下載下來git clone https://github.com/eclipse/paho.mqtt.c.git
               新版的mqtt文件夾里沒有sln文件,用cmake-gui生成sln文件,而后用vs2017打開編譯,openssl路徑;或者執(zhí)行paho.mqtt.c文件夾下的cbuild批處理文件(git下來的是vs2015配置,vs2017則是
               "D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat",具體的路徑請根據自己安裝配置),這里如果是批處理的話openssl的安裝目錄必須是c:\OpenSSL-Win64;
               cmake-gui,Configure選用Visual Studio 15 2017 Win64,Generate后,可以選定OPENSSL_LIB OPENSSL_INCLUDE_DIR OEPENSSLCRYPTO_LIB的路徑。

               使用cmake-gui,產生sln文件,在一次General之后可以選定PAHO_MQTT_C_LIB和PAHO_MQTT_C_PAHT和openssl相關路徑。然后打開工程編譯就可以。
               如果不行產生ZERO_CHECK,在CMakelist文件中加入SET(CMAKE_SUPPRESS_REGENERATION 1)
               原來的CMakeLists文件比較龐雜,這是精簡后的phot.mqtt.c/src/CMakeList
               phot.mqtt.c下的CMakeList:phot.mqtt.c/CMakeLists(下載完成后修改成文件名為CMakeList),去除了ZERO_CHECK、INSTALL、  PACKAGE三個工程文件。
               
               

                

               

                

            posted on 2019-01-18 13:06 Benjamin 閱讀(5514) 評論(0)  編輯 收藏 引用 所屬分類: VC

            亚洲欧美一级久久精品| 国产精品久久久99| 久久精品夜夜夜夜夜久久| 少妇久久久久久被弄高潮| 久久99国产综合精品免费| 青青草原1769久久免费播放| 欧美日韩中文字幕久久久不卡 | 人妻精品久久无码区| 久久精品免费观看| 久久午夜免费视频| 久久97精品久久久久久久不卡| 日韩欧美亚洲综合久久影院Ds| 国产毛片欧美毛片久久久| 亚洲成人精品久久| 亚洲va国产va天堂va久久| 久久久久无码精品| 狠狠狠色丁香婷婷综合久久五月| 久久亚洲精品国产亚洲老地址 | 一本色道久久88综合日韩精品 | 国产99久久久国产精品小说| 久久国产免费观看精品| 亚洲国产精品久久久天堂| 久久e热在这里只有国产中文精品99 | 精品久久久噜噜噜久久久| 很黄很污的网站久久mimi色| AV色综合久久天堂AV色综合在| 怡红院日本一道日本久久| 久久亚洲欧美日本精品| 亚洲综合精品香蕉久久网| 欧美色综合久久久久久| 久久综合日本熟妇| 精品久久人人爽天天玩人人妻 | 精品久久久久久无码专区不卡| 久久人妻少妇嫩草AV蜜桃| 久久夜色精品国产www| 久久国产三级无码一区二区| 99久久国产热无码精品免费久久久久| 久久精品国产第一区二区三区| 久久婷婷国产剧情内射白浆| 久久久久波多野结衣高潮| 亚洲愉拍99热成人精品热久久|