使用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.youkuaiyun.com/wangdamingll/article/details/53412325

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值