当前位置: 首页 > news >正文

网络编程(7)

【0】复习

modbus rtu与modbus tcp区别:都遵循主从问答

Modbus TCP:以太网 报文头(7) 功能码(1) 数据 读数据、写单个、写多个

Modbus RTU:串口 地址码(1) 功能码(1) 数据 校验位(2)

Modbus 库:创建实例、设置从机ID、建立连接、寄存器操作、关闭套接字、释放实例

HTTP协议:基于TCP的超文本传输协议、应用层,工作在B/S架构,采用80 作为默认端口、特点(无连接、媒体独立、无状态)、请求格式:请求行(请求方法 url 协议版本 )请求头部 空行 请求数据

响应格式:状态行(协议版本 状态码 状态码描述)消息头部 空行 响应数据

【1】源码分析

  1. 初始化服务器
  2. 循环等待链接,连接成功之后创建线程,调用线程函数,在线程函数中调用handler_msg函数接收并处理请求
  3. handler_msg函数中,接收请求,查看请求报文,根据请求报文分离请求方法、url以及get请求携带的参数,如果请求方法及不是get也不是post,直接405返回退出。确定请求资源的路径(拼接wwwroot),如果拼接的路径不存在则返回404网页。
  4. 如果是post请求或者是get请求携带参数的情况做标记(need_handler=1)的情况下,要处理请求数据在handler_request中。如果没做标记,清空包头,并根据请求的资源做出响应(直接回复请求的文件)
  5. 在handler_request中,判断请求方法是什么,如果是get请求则清空缓冲区中报文,如果是post请求,循环读取缓冲区中请求头部,获取请求数据的长度,然后从缓冲区中获取请求内容,准备开始响应
  6. 响应:首先回复状态行以及空行,在parse_and_process中处理get请求携带的参数以及post请求携带的数据,根据不同的请求数据做不同的逻辑处理回复不同的响应正文

【2】postman

第六步输入的内容就是服务器收到的post请求的请求数据

【3】HTML

1.开发环境:vscode

  1. 可以在wwwroot下面新建一个文件,例如:example.html
  2. 安装库open in browser

库安装完成后,在编写文本位置右击->open in other browser->选择合适的浏览器即可在网页显示html标签内容

输入html,选择html:5或者!回车或者!回车可以将框架进行搭建

2.html简介

HTML(英文Hyper Text Markup Language的缩写)中文译为“超文本标记语言”。是用来描述网页的一种语言。

所谓超文本,因为它可以加入图片、声音、动画、多媒体等内容,不仅如此,它还可以从一个文件跳转到另一个文件,与世界各地主机的文件连接。

HTML 不是一种编程语言,而是一种标记语言 (markup language)

Web 浏览器的作用是读取 HTML 文档,并以网页的形式显示出它们。浏览器不会显示 HTML 标签,而是使用标签来解释页面的内容

3.html标签

标签格式

有尖括号包围关键字,如:<html>

通常成对存在,如:<body> </boby>

上面的标签叫做开始标签,后面的标签是结束标签

标签的分类

(1)单标签:也称空标签 <标签名 /> 如:<br/> <meta>

(2)双标签:成对存在 <标签名> 内容 </标签名>

4.常用标签

1)标题标签:h1-h6

格式:<hn> 标题文本 </hn>

举例:

<h1>这是标题标签</h1>

<h2>这是标题标签</h2>

<h3>这是标题标签</h3>

<h4>这是标题标签</h4>

<h5>这是标题标签</h5>

<h6>这是标题标签</h6>

2)段落标签:p

一个段落中会根据浏览器窗口的大小自动换行

格式:<p> 文本内容 </p>

3)换行标签:br

格式:<br />

4)块标签:div

是一个块级元素,可以把文档分割为独立的、不同的部分,可以在div中嵌套标签

举例:

<div class="news">

<h2>News headline 1</h2>

<p>some text. some text. some text...</p>

</div>

注:可以给div设置class或id,通过选择器设置属性,则内部成员具有相同属性

5)表单标签:input

表示输入意思,是单标签

格式:<input type=”” name=”” value=”” id=””.....>

属性有多种:

这里重点讲type为text、radio

当type为text,表示是文本输入框

用法:<input type=”text” value=”文本框默认值” >

当type为radio,表示是单选框

用法:<input type=”radio” name=”控件名称” value=”提交的数值” οnclick=”处理函数” checked=”checked”>

解释:name:控件名称,同一组单选框设置相同名称

//Value:必须要有,是当点击时会提交的数据

Onclick:点击时会执行双引号中的处理函数

Checked:默认选中,同一组中只设置一个即可

xhr.readyState属性代表XMLHttpRequest对象的状态。它有5个取值:

0 (未初始化):尚未调用open()方法。

1 (已初始化):已经调用open()方法,但尚未调用send()方法。

2 (发送中):已经调用send()方法,但尚未接收到响应。

3 (接收中):已经接收到部分响应数据。

4 (已完成):已经接收到全部响应数据,并且可以使用该响应。

xhr.status属性代表服务器返回的HTTP状态码。其中200表示OK,表示请求成功。其他常见的状态码有404表示找不到请求的资源,500表示服务器内部错误等。

<!DOCTYPE html> <!--声明此文档为h5文档-->
<html lang="en"> <!--该网页为HTML网页,语言为英语--><head><meta charset="UTF-8"> <!--描述网页属性的--><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>25041</title> <!--标题标签--><script>//做外部引用function fun() {//改变文本输入框内容var v = document.getElementsByName("user");//v[0]:表示找到的第一个符合条件的标签// v[0].value = "hello world";//创建对象var x = new XMLHttpRequest();//初始化x.open("post", "", true);// true:异步通知x.send("get");//检测状态发生改变x.onreadystatechange = function () {//=:赋值//==:判断,不区分数据类型//===:判断,区分数据类型if (x.readyState === 4 && x.status === 200) {var r= x.responseText;//响应正文var s=r.split(",");console.log(s);v[0].value=s[0]+s[1];//拼接字符串}}}function set(params) {if (params == 'man')console.log("I AM SUPERMAN");if (params == 'woman')console.log("I AM WOMAN");}</script>
</head><body>HTML(英文Hyper Text Markup Language的缩写)中文译为“超文本标记语言”。是用来描述网页的一种语言。<br><br><br><br><!--input:表单标签  text:单行文本输入框--><input type="text" name="user" value="请输入姓名"><!--input:表单标签  button:按钮--><input type="button" name="ikun" value="刷新" onclick="fun()"><br>sex:<!--input:表单标签  radio:单选按钮--><!--进行单选选项时,name必须相同-->男:<input type="radio" name="sex" id="man" checked="checked" onclick="set(id)">女:<input type="radio" name="sex" id="woman" onclick="set(id)"><br><br><br><br><div style="color: green; background: pink;">所谓超文本,因为它可以加入图片、声音、动画、多媒体等内容,不仅如此,它还可以从一个文件跳转到另一个文件,与世界各地主机的文件连接。<p>HTML 不是一种编程语言,而是一种标记语言 (markup language)</p>Web 浏览器的作用是读取 HTML 文档,并以网页的形式显示出它们。浏览器不会显示 HTML 标签,而是使用标签来解释页面的内容<h1>这是标题标签</h1><h2>这是标题标签</h2></div><h3>这是标题标签</h3><h4>这是标题标签</h4><h5>这是标题标签</h5><h6>这是标题标签</h6></body></html>


文章转载自:

http://cI6BLj2U.cyyhy.cn
http://vkdLmx7K.cyyhy.cn
http://2kmYgMxH.cyyhy.cn
http://Zm6UBDEp.cyyhy.cn
http://ViI9g6Hi.cyyhy.cn
http://RXozmTBz.cyyhy.cn
http://lLI2Leyd.cyyhy.cn
http://CUJdKCEB.cyyhy.cn
http://FeisV1fw.cyyhy.cn
http://Mhr1MxQj.cyyhy.cn
http://AHknWCUK.cyyhy.cn
http://m2XKpgNR.cyyhy.cn
http://aNOnvDOJ.cyyhy.cn
http://zLQI1kce.cyyhy.cn
http://lljdkmYi.cyyhy.cn
http://HRZVXnbz.cyyhy.cn
http://31ORrYsM.cyyhy.cn
http://4bPKqSx8.cyyhy.cn
http://h0NmJHPt.cyyhy.cn
http://tMhMngal.cyyhy.cn
http://xtFwHYWx.cyyhy.cn
http://gTGqYqIA.cyyhy.cn
http://2s1ZtaSU.cyyhy.cn
http://awbWwmbH.cyyhy.cn
http://b5lCQalF.cyyhy.cn
http://vndNzr3Q.cyyhy.cn
http://7Fp9Vyo9.cyyhy.cn
http://84tL9jFu.cyyhy.cn
http://QerkVGH7.cyyhy.cn
http://TNpIETWY.cyyhy.cn
http://www.dtcms.com/a/376958.html

相关文章:

  • 嘉立创EDA从原理图框选住器件进行PCB布局
  • 浅谈代理流程自动化 (APA)
  • 图论3 图的遍历
  • MySQL内核革新:智能拦截全表扫描,百度智能云守护数据库性能与安全
  • 从0°到180°,STM32玩转MG996R舵机
  • Openresty Tracing 最佳实践
  • 少儿舞蹈小程序(12)作品列表查询搭建
  • 机器学习投票分类
  • Python Web工程之Flask项目中添加健康检查
  • javaEE-Spring IOCDI
  • 《常见关键字知识整理》
  • C++中的单例模式的实现
  • 淘宝闪购基于FlinkPaimon的Lakehouse生产实践:从实时数仓到湖仓一体化的演进之路
  • 云手机怎样进行自动化运行?
  • FPGA入门-状态机
  • 【Python Tkinter 】图形用户界面(GUI)开发及打包EXE指南
  • 工作效率翻倍!Excel多文件合并工具
  • 【Pywinauto库】8.4 pywinauto.timings模块
  • 4.7 静态分支, 动态分支和变体
  • LangGraph中ReAct模式的深度解析:推理与行动的完美融合——从理论到实践的智能Agent构建指南
  • 【机械故障】使用fir滤波器实现数据拟合
  • vue3 中 npm install mammoth 与 npm install --save mammoth 的主要区别说明
  • Milvus基于docker主机外挂实践
  • 从零搭建企业级日志系统:Web + App 全端解决方案实战!
  • 【算法--链表】138.随机链表的复制--通俗讲解
  • Nodejs(③Stream)
  • iOS 26支持的设备列表
  • 日记 - 2025.9.10 读研日记(一)
  • 【JVM】故障诊断和性能监控命令
  • Java大厂面试实录:在线教育场景下微服务架构与智能推荐实践(含技术详解)