微信小程序实战教程 Hibernate 状态模式 iframe text foreach swift3 tree vue论坛 vue代码规范 seo教程下载 多商户商城模板 软件测试项目实战案例 float占几个字节 mysql安装后怎么使用 webapp打包 配置tomcat环境变量 git下载项目 windows查看进程命令 linux撤销 mysql自然连接 python如何注释 python写文件 java基本语法 java中long php入门例子 黑客攻防实战入门 win10计算器下载 js闭包的理解 ae脚本管理器 流水账软件 linux运维之道 udp测试工具 正当防卫4存档 img写盘工具 java表白代码 透视网格工具怎么取消 设备管理器在哪 ie拒绝访问 迅雷单机游戏下载
当前位置: 首页 > 学习教程  > 

WebSocket使用(C++环境)(一) --- websocket++库的安装与使用

2020/10/16 17:48:05 文章标签: websocket库

websocket官方网址:http://websocket.org/ websocket官方网址:https://www.zaphoyd.com/websocketpp websocket使用手册:https://www.zaphoyd.com/websocketpp/manual/ 今天接收到一个任务,说是使用websocket,这还不…

websocket官方网址:http://websocket.org/

websocket++官方网址:https://www.zaphoyd.com/websocketpp

websocket++使用手册:https://www.zaphoyd.com/websocketpp/manual/

 

今天接收到一个任务,说是使用websocket,这还不够,只能用C++语言,这就有点尴尬了。话不多说,走起

 

一、概述

在C++环境下使用websocket,比较常用的有2个库:websocket++ 和 libwebsockets。 前者是用C++写的,依赖C++11和boost, 后者是用C语言写的,依赖openssl,这里不做过多介绍。

参考网址:http://www.oschina.net/project/tag/321/websocket?lang=21&sort=view

 

二、websocket++安装

1、websocket++下载

     git网址:https://github.com/zaphoyd/websocketpp

2、安装boost

 

linux:

yum install boost

yum install boost-devel 

 

三、websocket++编译

1、比较简单的编译方式

cd websocketpp-master/examples/echo_server

g++ -o test echo_server.cpp -I./ -I/home/wdm/websocketpp-master -L/home/wdm/local/lib -lboost_system -lboost_chrono -lrt

没错就是这么简单,具体boost库路径具体对待

 

2、用 scons 命令编译

1)what is scons? 

scons是linux下的自动构建工具,类似cmake,这里不做过多介绍。

 

2)scons下载与安装

(1)你需要先安装python,这里就不做过多介绍了

 

(2)scons 下载

wget http://prdownloads.sourceforge.net/scons/scons-2.2.0.tar.gz .

tar zxvf scons-2.2.0.tar.gz

cd scons-2.2.0

python setup.py install

正常情况下,scons将安装到${PYTHON_INSTALL_DIR}/bin/下

 

3)编译websocket++库

有同学会问:为毛费那么大的事?不都是 configure make&makeinstall解决吗?

因为websocket++就是用scons编译的,理由很简单。

 

仔细观察会发现在文件夹中有 SConstruct,而这个文件恰恰是用python写的,下次遇到你就知道了。

 

cd websocketpp-master  //进入根文件夹

scons                             //编译

 

what? 是不是很慢?可以先把其他的程序注释掉,先只编译echo_server

 

scons -c   //清空 

scons      //再次编译

对!你没有看错!一大堆错误,很坑

解决办法:显然是缺少chrono库啊

打开根目录下的SC文件

vi SConstruct

改成这样,你没有看错

 

scons      //再次编译

你没有看错!还是有错误(其实现在echo_server和echo_client已经编译完了)

解决方法:

vi connection.cpp +430

 

scons      //再次编译

没错 还是有错误。。。屡败屡战!

解决方法:

vi test/utility/close.cpp +40

将所有的close作用域前面都加上websocketpp::

 

scons      //再次编译

泪流满面,终于编过去了!

 

4)查看编译后的可执行文件

tree websocketpp-master/build/release

 

OK,这仅仅是个开始,稍后再尝试编译其他的例子。

 

四、websocket++的echo_client和echo_server的使用

第三步已经把echo_client和echo_server编译出来了,让我们先执行一下2个程序

1、启动echo_server

你没有看错,竟然启动不起来!崩溃。。。

解决方法:

翻译一下错误信息:大意是地址家族协议不支持。定位代码出错部分:

// Listen on port 9002
echo_server.listen(9002);

 

OK,查看源代码:

vi  websocketpp/transport/asio/endpoint.hpp

你没有看错,用的竟然是IPV6!

 

找找看看有木有重载的listen()函数,不错找到了!

 

修改为:echo_server.listen(websocketpp::lib::asio::ip::tcp::v4(),9002);

OK,编译,再启动试试,哦也,成功启动

 

2、启动echo_client

谢天谢地,木有问题

 

3、成功连接界面

 

4、用网页测试工具测试

网页测试工具网址:http://www.blue-zero.com/WebSocket/

 

 

告一段落!


本文链接: http://www.dtmao.cc/news_show_300147.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?