1. 程式人生 > >websocketpp庫 windows版本編譯

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和埠,即可成功連結。