首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏猿计划

    基于c++实现简易http服务器

    前言看到《基于c实现简易http服务器》进来的童鞋,你肯定本篇文章是使用基础的C++ 的socket来实现http服务器吧,你以为错了,使用基础的C++ 的socket来实现http服务器的文章百度一下有一大把了 ,我想介绍一个比较有意思的,而且实用性很强的基于C++实现建议http服务器的方案以及实现。 站在巨人的肩膀上因为我自己做的一个项目用到了C++实现的http服务器,在做项目的时候已经考虑了很多方案例如使用httplib库等。 2、解压出来(base) zhenghui@zh-pc:/data/project/VSCProject/boost_study$ tar -zxvf boost_1_55_0.tar.gz 3、执行. : yes (cached) - lockfree boost::atomic_flag : yes (cached) - compiler-supports-ssse3

    2.6K10编辑于 2023-11-22
  • 来自专栏magicsoar

    windows下的C++ socket服务器3

    3 int tcp_socket = socket(AF_INET, SOCK_STREAM, 0); socket函数用于建立一个socket,函数原型如下 SOCKET socket(int af, protocol); 第一个参数af指定应用程序使用的通信协议的协议族,af一般置为AF_INET(表示internetwork: UDP, TCP等); 第二个参数type为协议的Socket类型,常用的有3种 saddr.sin_port = htons(port);//使用的端口号 saddr.sin_addr.s_addr = INADDR_ANY;//任意地址均可以,这样任意客户端都可以访问到服务器 ), {     cerr << "bind error" << endl;        return -1; } 6 ::listen(tcp_socket, 1) 如果作为一个服务器 ,在调用socket()、bind()之后需要调用listen()来监听这个socket,如果客户端这时调用connect()发出连接请求,服务器端就会接收到这个请求。

    2.3K100发布于 2018-02-06
  • 来自专栏公众号:懒时小窝

    七、《图解HTTP》- HTTP首部和HTTP协作服务器

    #tjhttp 七、《图解HTTP》- HTTP首部和HTTP协作服务器#知识点请求头部字段分类比较多,本章介绍了下面的首部,内容非常多,熟悉常见的请求首部即可。 RFC2965 可在 http://www.w3.org/Protocols/rfc2965/rfc2965.txt,但是实际上属于W3C黑历史被删除, 最后通过:RFC 2965 - HTTP State 创建P3P的步骤如下:步骤 1:创建 P3P 隐私。步骤 2:创建 P3P 隐私对照文件后,保存命名在 /w3c/p3p.xml。 步骤 3:从 P3P 隐私中新建 Compact policies 后,输出到 HTTP 响应中。 关于P3P可以继续阅读下面的内容:The Platform for Privacy Preferences 1.0(P3P1.0)Specification http://www.w3.org/TR/P3P

    2.2K10编辑于 2022-08-12
  • 来自专栏Linux网络

    【Linux 网络】理解并应用应用层协议:HTTP(附简单HTTP服务器C++代码)

    HTTP是互联网世界的基石,它定义了客户端(如浏览器)与服务器之间进行通信的标准方式,主要用于交换或传输超文本数据(例如 HTML 文档)。 HTTP协议遵循标准的请求-响应(Request-Response)模型: 请求:客户端通过HTTP协议主动向服务器发送请求。 HTTP协议具有两个显著特点: 无连接:每一次请求都想要建立一个新的连接,处理完既断开 无状态:服务器不会保存客户端的状态信息。这意味着对于服务器而言,每一次请求都是全新的,它不具有记忆功能。 中的 Connection 字段是HTTP报头的⼀部分,它主要用于控制和管理客户端与服务器之间的连接状态。 当客户端和服务器都不明确关闭连接的时候,连接将保持打开状态。以便于后续请求和响应可以复用同一个连接。 在HTTP1.0中,默认使用的是非持久连接。

    16210编辑于 2026-01-14
  • 来自专栏用户4667108的专栏

    轻量级的服务器组件(支持http3)-Caddy

    前言 caddy是一个轻量的服务器,而且部署起来也不是非常复杂,一向尝鲜的我们安装caddy就是为了尝试下http3和quic,当然caddy作为一些小内存的服务器或者反代其实也是不错的,因为是go编写 www -s /bin/false -d /usr/local/www -M www #安装必要的依赖文件和创建PHP运行用户组 安装php-fpm mkdir php cd php wget http pool.log.slow “ 启动php /usr/local/bin/php-fpm start 安装caddy curl https://getcaddy.com | bash -s personal http.cgi ,http.filemanager 创建网站文件夹 mkdir -p /data/www/default chown -R www:www /data/www/ 创建配置文件-实例 http:// caddy -conf=/etc/caddy.conf >> /usr/local/caddy.log 2>&1 & 后记 caddy尝鲜支持quic和新特性 但是本身性能其实不如nginx,作为轻量服务器也是不错的

    3.5K20发布于 2020-04-16
  • 来自专栏精益码农

    HTTP HTTPS HTTP1.1 HTTP2 HTTP3

    这种直白的问题,回答的并不流畅,结合最近我在写gRPC, 索性梳理一下 HTTP HTTPS HTTP1.1 HTTP2 HTTP3 HTTP 客户端(如Web浏览器)从服务器(如Web服务器)请求资源时用到的协议 gRpc是谷歌开源的远程过程调用框架,基于HTTP2 协议研发。 HTTP3 HTTP的下一个版本,目前正在开发中。 它将建立在称为QUIC的基于UDP的传输之上(而不是HTTP/1.1和HTTP/2所基于的基于TCP的协议)。 它将在协议中包括HTTPS,因此HTTP/3仅可通过HTTPS使用。 HTTP每一次通信都会携带一组头部,用于描述这次通信的的资源、浏览器属性、cookie等,例如 为了减少这块的资源消耗并提升性能, HTTP/2对这些首部采取了压缩策略: •HTTP/2在客户端和服务器端使用 结语 HTTP/2的通过支持请求与响应的多路复用来减少延迟,通过压缩HTTP首部字段将协议开销降至最低,同时增加对请求优先级和服务器端推送的支持。

    3.8K11发布于 2021-03-12
  • 来自专栏hi

    原生HTTP服务器

    原生HTTP服务器 学习过Nodejs的朋友肯定对下面这段代码非常熟悉: const http = require('http'); let server = http.createServer((req }) server.listen(3000) 就这样简单几行代码,就搭建了一个简单的服务器服务器以回调函数的形式处理HTTP请求。 上面这段代码还有一种更加清晰的等价形式,代码如下: let server = new http.Server(); server.on("request", function(req, res){ // HttpServer继承与net.Server,它使用http_parser对连接的socket对象进行解析,当解析完成http header之后,会触发request事件,body数据继续保存在流中, req是http.IncomingMessage实例(同时实现了Readable Stream接口),详情请参看文档 res是http.ServerResponse实例(同时实现了Writable Stream

    3.1K60发布于 2018-05-25
  • 来自专栏sktj

    Go http服务器

    image.png sync.Mutex锁 image.png image.png 返回更详细的信息 image.png

    2.1K20发布于 2019-07-17
  • 来自专栏Python攻城狮

    web服务器1.HTTP协议介绍2.http协议分析3.总结4Web静态服务器

    3.浏览器解析过程 当浏览器读取到新浪首页的HTML源码后,它会解析HTML,显示页面,然后,根据HTML里面的各种链接,再发送HTTP请求给新浪服务器,拿到相应的图片、视频、Flash、JavaScript 3.总结 1.HTTP请求流程 跟踪了新浪的首页,我们来总结一下HTTP请求的流程: 步骤1:浏览器首先向服务器发送HTTP请求,请求包括: 方法:GET还是POST,GET仅请求资源,POST会附带用户数据 HTTP响应,响应包括: 响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器端处理时发生了错误; 响应类型:由Content-Type指定; 以及其他相关的 步骤3:如果浏览器还需要继续向服务器请求其他资源,比如图片,就再次发出HTTP请求,重复步骤1、2。 Web采用的HTTP协议采用了非常简单的请求-响应模式,从而大大简化了开发。 HTTP GET请求的格式: GET /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3 每个Header一行一个,换行符是

    70510发布于 2018-08-23
  • 来自专栏沈唁志

    网页服务器HTTP响应状态-HTTP状态码

    HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码。 505-HTTP 版本不受支持。 常见的错误,HTTP 500 :出现 HTTP 500 – 内部服务器错误,通常有两种原因 是服务器错误(这种可能性比较小) 是程序因某种因素导致服务器运行出错 另外,造成 500 错误常见原因还有: 3xx-重定向,客户端浏览器必须采取更多操作来实现请求。 浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。 301-对象已永久移走,即永久重定向。 302-对象已临时移动。 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:网页服务器HTTP响应状态-HTTP状态码

    7.5K20发布于 2018-05-24
  • 来自专栏ACM算法日常

    HTTP 3 快来了

    原文 | Anuradha Wickramarachchi 译者 | Simon HTTP 1 到 HTTP 3 的演变 什么 是HTTP? 此定义中的客户端是用户代理,它可以是浏览器、程序或使用 HTTP 协议调用服务器的任何工具。web服务器返回请求的内容,代理可以协调web服务器和用户代理之间的通信。 代理的功能如下; 缓存 过滤(隐藏成人内容或根据地区屏蔽内容) 负载平衡 (直接向空闲服务器请求) 身份验证 (允许用户与不同的服务器通信) 登录 (HTTP 登录通常用于异常检测等) 在 HTTP 1 HTTP 3 新成员 这是一个尚未出现的协议(在某种程度上)。不过,我注意到YouTube已经在chrome浏览器中使用了 HTTP 3 (我不确定其他浏览器是否使用了 HTTP 3 )。 HTTP 3 旨在简化TCP握手 ( 3次握手协议:hi,hi,you got my hi ),最重要的是,使用新的 QUIC 协议可以更快地建立连接。

    57210发布于 2020-08-27
  • 来自专栏epoos.com

    Http3基础

    2018年10月,互联网工程任务组 HTTP 及 QUIC 工作小组正式将基于 QUIC 协议的 HTTP(英语:HTTP over QUIC)重命名为HTTP/3以为确立下一代规范做准备。 快速重启会话,切换网络时也能连接保持,可以内建与TCP中不同的连接标识方法,从而在网络完成切换之后,恢复之前与服务器的连接 快速建立网络连接,最快零RTT建立连接,目前TCP与SSL/TLS(1.0,1.1,1.2 当然,如果仅仅是感受一下http3.0还是很简单的 Google 搜索,Gmail 或者 Youtube官网,当前都已经使用了 Http3 协议了,只不过该功能被隐藏了起来。 里面安装 HTTP/2 and SPDY indicator 插件 安装之后如果看到插件栏有一个闪电图标说明开启成功了,此后如果访问http3请求的网站,这个图标会变成绿色。 相关链接 为什么HTTP3.0使用UDP协议 http2/http3协议有什么优劣

    71720编辑于 2022-06-06
  • 来自专栏架构师成长之路

    HTTP详解(3)-http1.0 和http1.1 区别

    发出请求信息 3. 回送响应信息 4. 关掉连接 小结:浏览器和web服务器连接很短,每次连接只处理一个请求和响应。 HTTP1.1在Request消息头里头多了一个Host域,比如: GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org 3. date/timestamp (日期时间戳) (接收方向) 无论是HTTP1.0还是HTTP1.1,都要能解析下面三种date/time stamp: Sun, 06 Nov Quality Values HTTP1.1多了个qvalue域: qvalue = ( "0" ["." 0*3DIGIT ] ) | ( "1" [ "." 0*3("0") ] ) 6.

    1.8K10编辑于 2022-04-14
  • 来自专栏腾讯技术工程官方号的专栏

    一文读懂 HTTP1HTTP2HTTP3

    1991 年 HTTP0.9 被发明。1996 年出现了 HTTP1.0。2015 年 HTTP2 正式发布。2020 年 HTTP3 或能正式使用。以下将会简单介绍。 而这个就是 HTTP3。它真正“完美”地解决了“队头阻塞”问题。 ? 另外 github 上面也有 C++版本的 QUIC 实现,利用 Nodejs 的 C++ 模块,前端工程师也可以快速实现一个 node-quic。 1.2,让你明白 TLS 1.3 的强大 CaddyWeb 服务器 QUIC 部署 关于 QUIC 的各种尝试 使用 QUIC 协议实现实时视频直播 0 卡顿 解密 HTTP/2 与 HTTP/3 的新特性 Web通信协议,你还需要知道:SPDY 和 QUIC 如何看待 HTTP/3

    1.8K11发布于 2020-02-10
  • 来自专栏后端码事

    简单的 http 服务器

    简单的基于socket和NIO的 http server示例: 项目路径:https://github.com/windwant/windwant-demo/tree/master/httpserver-demo Request: 1 package org.windwant.httpserver; 2 3 import java.io.IOException; 4 import java.io.InputStream 45 uri = sb.substring(i + 1, j).toString(); 46 System.out.println("http /test.jpg"))){ 48 uri = "/404.html"; 49 System.out.println("http b = new byte[BUFFER_SIZE]; 72 } 73 }else{ 74 sb.append("HTTP

    2K30发布于 2020-09-11
  • 来自专栏后台技术杂项笔记

    简易http服务器Tinyhttpd

    (3) 取出 HTTP 请求中的 method (GET 或 POST) 和 url,。对于 GET 方法,如果有携带参数,则 query_string 指针指向 url 中 ? (4) 格式化 url 到 path 数组,表示浏览器请求的服务器文件路径,在 tinyhttpd 中服务器文件是在 htdocs 文件夹下。 (5) 如果文件路径合法,对于无参数的 GET 请求,直接输出服务器文件到浏览器,即用 HTTP 格式写到套接字上,跳到(10)。 这一部分比较乱,见下图说明: 图 1 管道初始状态 图 2 管道最终状态 (10) 关闭与浏览器的连接,完成了一次 HTTP 请求与回应,因为 HTTP 是无连接的。 3. 食用流程 (1) 直接拷贝或者自行敲码 (2) 修改相关文件权限和perl代码(上面有写) (3) 在项目目录下使用makefile构建 [root@localhost Myhttpd]# make clean

    2.1K10编辑于 2022-09-26
  • 来自专栏python3

    3.HTTP报文内的HTTP信息

    一 .HTTP报文 : 用于HTTP协议交互的信息被称为HTTP报文,请求端(客户端)的HTTP报文叫做请求报文,响应端(服务端)的叫做响应报文. accept accept-charset accept-encoding accept-language content-language 服务器驱动协商(server-driven negotiation ) : 由服务器端进行内容协商 . 还可以利用JavaScript脚本在web页面上自动进行上述选择.如果按OS的类型或浏览器类型,自行切换成PC版页面或手机版页面 透明协商(transparent negotiation) : 是服务器驱动和客户端驱动的结合体 ,是由服务器端和客户端各自进行协商的一种方法 .

    87410发布于 2020-01-10
  • 来自专栏纯情博客

    co-uring-http: 基于 C++ 无栈协程与 io_uring 的高性能 HTTP 服务器

    C++ 20 引入的无栈协程让编写异步程序容易了不少, 之前通过回调函数实现的功能可以全部通过类似同步代码的写法来实现. 为了体验这些特性, 我用 C++ 20 协程与 io_uring 重新实现了一个烂大街项目: HTTP 服务器. 鉴于以前没用过 C++ 写项目, 再加上 GitHub 常见的 HTTP 服务器项目是基于 Reactor 模式与 epoll 实现的, 以至于我在开发的过程中能借鉴 (指复制) 的机会并不多, 希望各位包容一下我的逆天代码 主要特性 使用 C++ 20 协程简化服务端与客户端的异步交互 使用 io_uring 管理异步 I/O 请求, 例如 accept(), recv(), send() 使用 ring-mapped buffers 缓冲区的数量与大小的常量定义于 constant.hpp, 可以根据 HTTP 服务器的预估工作负载进行调整.

    99610编辑于 2023-05-07
  • 来自专栏原创分享

    利用多线程和 C++ 实现一个简单的 HTTP 服务器

    前言:服务器是现代软件不可或缺的一部分,而服务器的技术也是非常复杂和有趣的方向。随着操作系统不断地发展,服务器的底层架构也在不断变化。 本文介绍一种使用 C++ 和 多线程实现的简单 HTTP 服务器。 首先我们先来看一下如何创建一个服务器。 但是这样的功能显然没有太大意义,所以我们基于这个基础上实现一个 HTTP 服务,让它可以处理 HTTP 请求。 当 llhttp 回调 HTTP_Parser 时,HTTP_Parser 在合适的时机就会调用 parser_callback 里的回调,比如在解析完 HTTP Header 时,或者解析完整个报文时 到此为止,就实现了一个 HTTP 服务器了 ,在早期的时候,服务器也是采用这种多进程 / 多线程的处理方式,现在有了多路复用等技术后,很多服务器都是基于事件驱动来实现了。

    2.4K30编辑于 2022-12-06
  • 来自专栏大学生计算机视觉学习DeepLearning

    c++ 网络编程(十一)TCPIP LINUX 初步制作基于HTTP的WEB服务器

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9663028.html HTTP概要 理解Web服务器端: 编写HTTP(超文本传输协议)服务器端 ,即Web服务器端,我们可以这样定义它:基于HTTP协议,将网页对应文件传输给客服端的服务器端。 这里浏览器就相当于客服端,定好的数据格式就是HTTP协议,Web服务器的工作主要就是传输这些数据给浏览器。 3HTTP请求消息的结构:包括请求行,消息头,空行,消息体。 连接在资源路径后边;POST方法使用的是不带参数的URL,它的参数是通过http请求报头中的请求消息体传递给服务器的。 关于HTTP的请求与响应格式 ?

    2.2K40发布于 2018-09-30
领券