首页 > 其他分享 >JSONCPP向浏览器前端发送服务器本地文件列表

JSONCPP向浏览器前端发送服务器本地文件列表

时间:2023-09-02 12:55:14浏览次数:41  
标签:文件 浏览器 请求 写入 JSONCPP 响应 json 服务器 css

服务器解析了浏览器请求之后,要进行响应

响应体里需要存放请求的内容

HTML标签:是页面的核心内容,定义了页面有什么内容。

CSS:控制HTML元素的排版布局和展示方式,是美化页面文档的。

JavaScript:让用户与页面进行交互,或在网页背后默默操控网页,以便让显示的内容与效果有所改变。对网页来说就是上帝之手。

请求内容包括html、css、js,这些是网页核心组件,此外在服务器端设计中关注的最主要的是请求的资源

要正确返回资源,首先需要正确解析请求的是什么path

path有三种情况:

login, register,index,welcome这种非请求静态资源的目录

picture,video请求资源

upload,上传资源,download,请求服务器某个预设路径下的文件写入json中

解析好的路径最后用path变量表示

点击图片的请求:

1.picture.html 几次

2."/css/bootstrap.min.css"

3."/css/magnific-popup.css"

4."/css/animate.css"

5."/css/bootstrap.min.css"

6."/css/animate.css" (this).mmFile 0.0

7."/css/magnific-popup.css"

8."/css/style.css"

9."/css/font-awesome.min.css"

请求到的图片顺序也不是按照1234

 

 

解析完成之后生成响应:makeResponse完成,NO REQUEST不用生成响应,因为表明请求还不完整。GET REQUEST和BAD REQUEST则进行响应应答。

响应状态行、响应头向writeBuffer中写入string,写入的内容由解析时的完成情况确定。

首先要构造这个响应体里的内容,响应体里的内容可以是很多种编码类型,只要在响应头里指明并且浏览器支持这种解码就可以,比如json。

响应体内容生成经历几个步骤。1.确定请求的静态文件的path。有可能是html、css、js或者是服务器的展示图片以及视频。如果是这一类的情况,就获取对应文件的文件信息属性(stat函数)存在结构体里,然后将这个文件映射到内存里提高数据读取效率。

返回一个指针指向这个文件所在的内存地址。如果是请求下载服务器某个文件夹下的内容的话,因为它可能涉及到多个文件,比较复杂,就选用json这种比较轻量级的数据传输格式,把指定文件夹下的文件写入json里键值对结构体保存在本地,最后跟之前的过程一样的,把json文件映射到内存里。

把这个响应体写入响应时利用iov结构体,iov[0]中存放状态行跟响应头的内容,iov[1]中存放请求的响应体内容,调用写函数将这些内容依次写入到socket的缓冲区里.

如果按上面的顺序打断点观察,会发现最先请求的是html,接着css、js最后是list.json,也就是那个目录下的文件。

 

使用 struct iovec 结构体将响应写入到 socket 缓冲区有以下几个好处:

  1. 减少系统调用次数:使用 struct iovec 可以将多个不连续的内存块一次性写入到 socket 缓冲区,从而减少了多次系统调用的开销。这样可以提高性能,特别是在需要发送大量数据或频繁的网络通信场景下。

  2. 提高数据发送效率:struct iovec 允许一次性发送多个片段的数据,这些片段可以是连续的,也可以是不连续的。这样可以减少数据在内核和用户空间之间的复制和重新组织,提高数据发送的效率。

  3. 灵活构造响应:struct iovec 的灵活性允许你以不同的方式构造响应数据。你可以将不同的片段按照需要组合,并在每个片段上指定特定的长度。这样可以方便地处理不同类型的数据(比如文本、二进制数据等)并自定义数据的格式。

标签:文件,浏览器,请求,写入,JSONCPP,响应,json,服务器,css
From: https://www.cnblogs.com/synapse331/p/17671109.html

相关文章

  • Flink 1.17教程:历史服务器History Server
    K8S运行模式容器化部署是如今业界流行的一项技术,基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维。容器管理工具中最为流行的就是Kubernetes(k8s),而Flink也在最近的版本中支持了k8s部署模式。基本原理与YARN是类似的,具体配置可以参见官网说明,这里我们就不做过多讲解了......
  • Flink 1.17教程:集群搭建、运行模式(standalone/yarn/k8s)及历史服务器
    集群角色集群启动如果是部署在本地,本地访问,无需进行任何配置,直接启动即可。如果是部署在服务器,需要远程访问,则需要将flink.conf中的localhost修改为服务器IP地址或是0.0.0.0节点服务器hadoop102hadoop103hadoop104角色JobManagerTaskManagerTaskManagerTaskManager[atguigu@node001......
  • Vue项目打包,部署到apache服务器
    初学veu,实战项目上线服务器,查遍全网和问遍身边大佬,终于经过我不断地探索,上线成功啦,现在我就为大家梳理一下思路。首先,我们先看一下官网链接:VueCLI部署.,参数配置:publicPath.,VueRouter:HTML5History模式1、步骤1、项目配置2、打包项目,命令:npmrunbuild3、将生成的dist文件......
  • 云服务器后端
    给后端打一个根项目的包安装xftp通过xshell连接成功之后点这个之间连接到xftp把jar包复制过去运行cd/home/这个是为了转到/home下面nohupjava-jarruoyi-admin.jar&这个是为了运行jar包tail-fnohup.out查看日志成功的样子......
  • 恒创科技:百|度抓取香港服务器抓取超时是什么情况?
    ​网络延迟导致抓取超时网络延迟是指从发送请求到接收响应之间的时间延迟。如果网络延迟过高,服务器可能无法及时响应请求,导致超时。在香港服务器上抓取数据时,如果网络延迟过高,可能会出现抓取超时的情况。服务器负载过高可能导致抓取超时当服务器同时处理大量请......
  • 下载和安装MySQL服务器
    要下载和安装MySQL服务器,您可以按照以下步骤进行操作。请注意,MySQL的版本和安装方法可能会有所不同,因此确保查看官方网站以获取最新的安装指南和下载链接。以下是在常见的Windows、Linux和macOS操作系统上安装MySQL服务器的基本步骤:在Windows上安装MySQL服务器:访问MySQL官方......
  • mailcow - 搭建自己的邮件服务器
    title:mailcow-搭建自己的邮件服务器tags:邮件category:/小书匠grammar_cjkRuby:true欢迎使用{小书匠}(xiaoshujiang)笔记软件,您可以通过小书匠主按钮>模板里的模板管理来改变新建文章的内容。小书匠是一款本地优先,去中心化,分布式,支持选择性同步的全平台覆盖笔记......
  • 银河麒麟服务器操作系统V10SP2离线安装Google Chrome浏览器
    https://blog.csdn.net/ShenSeKyun/article/details/132224932https://www.google.cn/chrome/index.htmlGOOGLE网址最下方下载LINUX版本的浏览器安装包打开终端,输入rpm-ivhgoogle-chrome-stable_current_x86_64.rpmyuminstall google-chrome-stable_current_x86_64.rpm......
  • 站长告诉怎么选择网站服务器
    很多站长开始做网站的时候,总是纠结于网站主机的选择。对于是使用服务器还是虚拟主机作为网站空间,往往存在很多困惑,今天为大家详细对比解析一下!选择一个好的空间将有助于网站被搜索引擎更快地编入索引,并继续吸引更多的流量来找到你。所以空间的选择似乎是一件小事,但对于网站推广来说......
  • 游戏服务器成DDoS最大攻击重灾区
    游戏产业的迅猛发展也让游戏产业成为被黑客攻击的重灾区。什么原因让游戏行业成为DDoS的攻击重点。总结有如下原因和主要手段:    1.游戏行业的攻击成本较低,攻防成本1:N。随着DDoS攻击的打法越来越复杂,攻击点更是越来越多,基本的静态防护策略已无法达到较好的效果,易攻难守的特......