windows c/c++使用libevent库编写http/https服务端

windows c/c++使用libevent库编写http/https服务端

    • 一、前言
    • 二、间单描述
    • 三、编译openssl静态库
    • 四、编译libevent静态库
    • 五、Windows c/c++利用libevent库创建http/https服务端


一、前言

本文章旨在对自己接触过的项目的一种温习回顾,以此编写作为笔记,也希望能帮到各位有需要的道友,
若有任何建议或探讨可加 QQ群进行交流:887939177


二、间单描述

创建http server,只需编译libevent库即可,若想创建https server,则需要编译libevent和openssl库。
当然不论是要使用http还是https,你都可以使用符合https server编译出来的库。


三、编译openssl静态库

1.下载openssl1.1.1源码:https://download.csdn.net/download/hedubao135792468/10686090
2.下载openssl辅助编译工具(Perl & Nasm):https://download.csdn.net/download/hedubao135792468/10686133
3.准备编译环境,本人的环境是win10,VS2017。
4.解压第二步下载的辅助编译工具RAR压缩包,分别安装里面的2个exe文件,均为下一步即可完成安装。
5.解压第一步下载的源码RAR压缩包。
6.打开VS2017开发人员命令提示符,developer Command Prompt for VS2017(你也可打开对应版本的,此处最好以管理员权限打开,因为编译过程中访问一些文件需要管理员权限)。

windows c/c++使用libevent库编写http/https服务端_第1张图片
7.利用cd命令进入源码目录,输入对应编译指令,截图为我输入的指令(perl Configure VC-WIN32 no-shared no-tests --prefix=c:\herob\openssl)
windows c/c++使用libevent库编写http/https服务端_第2张图片
8.此时目录已经生成了makefile文件,接下来输入nmake指令和nmake install即可,编译好的库就在prefix指令的路径下了。
windows c/c++使用libevent库编写http/https服务端_第3张图片
9.其中include文件夹为调用库时需要的头文件,lib文件夹则为编译好的静态库libcrypto.lib libssl.lib。

TIP1:perl Configure VC-WIN32 [no-shared] [no-asm] [no-tests] [–debug] -D_WIN32_WINNT=0x0501 --prefix=d:\openssllib
VC-WIN32:可根据需要修改为64位
[]中的为可选项,no-shared为编译静态库,不加此项默认编译出的是动态库;
no-tests为不需要tests功能,如果只需要openssl的库可以加上此项,否则可能会出很多错误导致编译不过;
–debug为编译debug版,不加此项默认编译出的是release版
–prefix指定生成库的路径,路径最好不包含汉字
TIP2:如遇一些文件打不开的报错,请使用管理员权限答案开命令提示符窗口。
该链接资源为已经编译好的openssl静态库:https://download.csdn.net/download/hedubao135792468/10686108


四、编译libevent静态库

1.下载libevent源码:https://download.csdn.net/download/hedubao135792468/10686059
2.解压下载号的RAR源码包,我们的编译流程可以看一下目录下的Makefile.nmake文件:
windows c/c++使用libevent库编写http/https服务端_第4张图片
3.我们可以看到,当指定了Openssl的路径时编译出来的库则支持SSL,反之则不支持。
4.我们需要编译支持https的库,则需要指定openssl库路径(即刚才我们编译好的openssl库),以下截图为我的修改:
windows c/c++使用libevent库编写http/https服务端_第5张图片
5. 打开VS2017开发人员命令提示符,developer Command Prompt for VS2017(你也可打开对应版本的,此处最好以管理员权限打开,因为编译过程中访问一些文件需要管理员权限)。
windows c/c++使用libevent库编写http/https服务端_第6张图片
6.利用cd命令进入源码目录,输入编译指令(nmake /f Makefile.nmake static_libs)。
7.执行完成后我们在源码目录下就可以看到已经生成了libevent相关的4个静态库文件了(无SSL的则只有3个库文件,无libevent_openssl.lib)
windows c/c++使用libevent库编写http/https服务端_第7张图片

TIP1:如遇一些文件打不开的报错,请使用管理员权限答案开命令提示符窗口。
该链接资源为已经编译好的libevent静态库:https://download.csdn.net/download/hedubao135792468/10686152


五、Windows c/c++利用libevent库创建http/https服务端

demo工程(VS2019):https://download.csdn.net/download/hedubao135792468/18167046

准备工作:

引入库文件以及头文件,将之前编译好的libevent、openssl的静态库及头文件放到你的工程目录下,然后设置工程引用的库路径以及头文件路径,并引入库文件(注意有的时候需要另外加上一般系统自带的ws2_32.lib)

创建流程:

Created with Raphaël 2.2.0 开始 WSAStartup2.2 event_base_new evhttp_new 是否支持SSL? SSL_CTX_new SSL_CTX_use_certificate_chain_file & SSL_CTX_use_certificate_file & SSL_CTX_use_PrivateKey_file SSL_CTX_check_private_key evhttp_set_bevcb evhttp_set_gencb evhttp_bind_socket 是否阻塞调用? event_base_dispatch evhttp_free & event_base_free & WSACleanup 结束 event_base_loop yes no yes no

示例代码:
windows c/c++使用libevent库编写http/https服务端_第8张图片
windows c/c++使用libevent库编写http/https服务端_第9张图片
windows c/c++使用libevent库编写http/https服务端_第10张图片windows c/c++使用libevent库编写http/https服务端_第11张图片
windows c/c++使用libevent库编写http/https服务端_第12张图片
windows c/c++使用libevent库编写http/https服务端_第13张图片
windows c/c++使用libevent库编写http/https服务端_第14张图片

简略的接收处理回调代码:
windows c/c++使用libevent库编写http/https服务端_第15张图片
接收数据
windows c/c++使用libevent库编写http/https服务端_第16张图片

注意:若想创建http服务端,只要将SSL证书方面的代码去除即可!


由于使用CSDN博客文章编写器不熟悉,导致代码粘贴出现问题,所以不得不以截图的形式完成代码粘贴,此处请朋友们见谅!
文章描述比较简单,希望能帮助到朋友们,如有疑问或建议,欢迎加QQ群(887939177)进行讨论!
windows c/c++使用libevent库编写http/https服务端_第17张图片

你可能感兴趣的:(windows,c/c++,libevent,http/https,server,windows,c/c++,openssl)