websocketpp庫 windows版本編譯
01 websocketpp
websocketpp 提供了CMakeLists.txt。使用CMake-gui編譯。
目前websocketpp程式碼版本0.8.1。
websocketpp 預設支援的非windows系統,windows下編譯,有少部分examples或者test工程要稍加修改。
這個開源專案,有簡單可執行的server端和客戶端,並且有完整的對wss的支援demo(需要自己生成證書,可以使用openssl生成證書)。
02 編譯配置專案
需要配置 boost庫,這裡採用完全編譯,一定要注意zlib/openssl/boost庫的vs版本要一致。
03 編譯錯誤修改
03.01 網路庫類連結錯誤
LNK2001 無法解析的外部符號 __imp_ntohs
LNK2019 無法解析的外部符號 __imp_ntohs
這是因為沒有找到windows的ws2_32.lib庫。
在對應的工程檔案中加入
#pragma comment(lib,"ws2_32.lib")
或者在
對應專案的屬性==>聯結器==>輸入==>附加依賴項 加入 ws2_32.lib
比如:
03.02 平臺類編碼錯誤
strcasecmp錯誤,可以採用如下巨集定義:
#define strcasecmp stricmp
include
//#include <syslog.h>
sleep 無法識別,定義成功windows 函式
#define sleep(a) Sleep(a*1000)
04 編譯結果
examples編譯完成有27個工程。
專案名稱帶tls的,是使用ssl的,即wss協議。
05 根據web端證書生成wss客戶端需要的*.pem檔案
在瀏覽器中輸入要訪問的網址,可以得到對應的網址的web簽名證書。
比如:
05.01 匯出證書
這裡使用chrome瀏覽器。到處17ce.com網址的證書儲存為*.cer檔案,並且儲存到openssl.exe目錄。
D:\install\openssl-1.0.2j\vs2015\lib\win64\release\bin\17ce.cer
操作如下:
05.02 生成*.pem檔案。
使用 openssl.exe
根據證書檔案 17ce.com
生成 client.pem
檔案。
在openssl.exe目錄下執行:
openssl x509 -in 17ce.cer -inform der -out client.pem
然後,用這個client.pen
檔案替換websocketpp demo 中的 *.pem檔案,就可以和對應使用17ce.com證書的wss服務的通訊了。比如把print_client_tls
專案print_client_tls.cpp
中的ca-chain.cert.pem檔案替換為client.pem。在修改對應的wss服務的url和埠,即可成功連結。