在linux上使用c++实现http/2协议进行通信

采用nghttp2是一个http/2协议的翻译器。

采用openssl进行TLS通信,实现加密和安全。

采用socket与目标server建立tcp连接,实现底层数据通信。

        nghttp2 是一个很优秀的 HTTP/2 的 C 类实现。它的前身是 SPDY 库 spdylay,作者都是 Tatsuhiro Tsujikawa.
地址:https://github.com/nghttp2/nghttp2

        OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

地址:https://github.com/openssl/openssl

一、连接建立
1、初始化一个socket,conect()至目标服务器,得到一个句柄fd。

2、使用SSL_CTX_new初始化SSL_CTX,调用SSL_new这个SSL_CTX 初始化一个ssl,使用句柄fd与服务器端进行握手。

3、nghttp2_session_callbacks_new申请初始化回调函数,nghttp2_session_client_new初始化一个新http2的session,至此建立了http/2的通信连接。

二、调用nghttp2_submit_request提交请求。

三、io控制

1)调用nghttp2_session_want_read、nghttp2_session_want_write进行IO检测。

2)调用nghttp2_session_recv、nghttp2_session_send进行io读取。

四、连接关闭

1、调用nghttp2_session_del关闭释放nghttp2缓存 。

2、调用SSL_shutdown、SSL_free、SSL_CTX_free关闭释放ssl  。

3、调用shutdown、close关闭释放socket。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值