zoukankan      html  css  js  c++  java
  • http server

    相关链接

    用 C++ 写 HTTPS 客户端和服务器大体步骤
    从零编写c++之http服务器(3)-http服务

    libuv(libevent) + openssl(schannel.dll)

    1. 用libuv处理server socket
    bind
    listen
    accept
    read->write
    
    1. 用openssl处理ssl/tls,mem_bio可以使你不必使用openssl自己的socket操作
    BIO_write
    BIO_rea
    3. 用joyent/http_parser解析http协议
    4. 构造响应信息,这是一个完全的字符串操作
    5. 反过来,用openssl加密
    6. 用libuv把数据写入socket
    > windows下可以用[schannel.dll](https://docs.microsoft.com/zh-cn/windows/win32/com/schannel)代替openssl;
    > openssl也可以读取.pfx文件,不必非要pem/pvk
    
    ### boost库:
    如果你要练手,以熟悉 HTTP + SSL 协议的话,推荐看看这个:
    doc/html/boost_asio/example/ssl/server.cpp
    doc/html/boost_asio/example/ssl/client.cpp
    
    如果你要具体用到实际项目中,强烈不建议自己造轮子,因为光 HTTP/1.0,HTTP/1.1,HTTP/2 就要自己解析协议搞半天,加上 SSL 就更复杂了,在你徒手解析协议的时候,其他人的产品都上线了。推荐以下库:
    curlpp:libcurl 的 C++ 封装 GitHub - datacratic/curlpp: C++ bindings for cURL
    cpp-netlib:基于 boost.asio 的一个网络库 cpp-netlib: The C++ Network Library
    
    ### Httpapi.dll:
    [HTTP Server API Version 2.0 Reference (Windows)](https://docs.microsoft.com/zh-cn/windows/win32/http/http-server-api-version-2-0-reference?redirectedfrom=MSDN)
    读完这个你就懂了,就那么几个函数,自动使用IOCP和http.sys,根本无需担心性能问题,只要写你的业务逻辑就好了。
    msdn还有良心sample:[HTTP Server Sample Application (Windows)](https://docs.microsoft.com/zh-cn/windows/win32/http/http-server-sample-application)
  • 相关阅读:
    PHP读写XML文件的四种方法
    如何在linux系统中设置静态ip地址
    Memcached和Memcache安装(64位win7)
    Mysql存储过程和函数区别介绍
    随笔
    Vue 中使用axios传参数,后端收不到数据
    vs2019创建mvc连接mysql
    dapper多表查询
    Java并发编程:volatile关键字解析
    Mysql Innodb 间隙锁浅析
  • 原文地址:https://www.cnblogs.com/hjbf/p/12143523.html
Copyright © 2011-2022 走看看