使用websocket++庫監聽端口失敗:asio listen error: system:97 (Address family not supported by protocol)

最近使用websocket++這個庫來與網頁保持長連接通信,這個庫的底層使用的是boost庫中的asio來進行socket通信。我在windows上編譯之後可以正常監聽端口,通信也正常,但是編譯成linux版本,在centos 版本2.6.32-696.10.1.el6.x86_64上運行,端口監聽時會報asio listen error: system:97 (Address family not supported by protocol)這個錯誤,看字面意思就是不支持這個協議族。在網上找了,看到一個大神的帖子,說這個是因爲websocket++庫在使用boost asio進行網絡通信時,默認使用的是IPV6協議族,在某些機器上還不支持IPV6。

       解決問題的關鍵就是在端口監聽的時候指定使用IPV4版本。代碼如下

        // Listen port
        g_server.listen(websocketpp::lib::asio::ip::tcp::v4(), uPort);

 websoket 中listen函數有多個重載,如果調用只傳監聽端口的那個重載函數,默認就是使用IPV6版本。這個有點小坑,希望能幫到遇到相同問題的同學

參考文章:https://blog.csdn.net/wangdamingll/article/details/53412325

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章