首页 > 其他分享 >自研静态Web服务器并返回固定⻚⾯数据

自研静态Web服务器并返回固定⻚⾯数据

时间:2023-08-21 23:33:49浏览次数:40  
标签:Web socket 自研 报文 client 服务器 socekt data response

开发自己的静态Web服务器的步骤

1. 编写一个TCP服务端程序
2. 获取浏览器发送的http请求报文数据
3. 读取固定页面的数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
4. HTTP响应报文数据发送完成以后,关闭服务与客户端的套接字

静态Web服务器-返回固定页面数据的示例代码

 1 import socket
 2 
 3 if __name__ == '__main__':
 4     # 1.编写一个TCP服务端程序
 5     # 创建socekt
 6     tcp_server_socekt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 7     # 设置端口复用 
 8     tcp_server_socekt.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
 9     # 绑定地址
10     tcp_server_socekt.bind(("", 8080))
11     # 设置监听
12     tcp_server_socekt.listen(128)
13 
14     while True:
15         # 2.获取浏览器发送的HTTP请求报文数据
16         # 建立链接
17         client_socekt, client_addr = tcp_server_socekt.accept()
18         # 获取浏览器的请求信息
19         client_request_data = client_socekt.recv(1024).decode()
20         print(client_request_data)
21 
22         # 3.读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器
23         with open("./static/index.html", "rb") as f:
24             file_data = f.read()
25 
26         # 应答行
27         response_line = "HTTP/1.1 200 OK\r\n"
28         # 应答头
29         response_header = "Server:pwb\r\n"
30         # 应答体
31         response_body = file_data
32         # 应答数据
33         response_data = (response_line + response_header + "\r\n").encode() + response_body
34 
35         client_socekt.send(response_data)
36 
37         # 4.HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字
38         client_socekt.close()

 

在浏览器访问测试:

 服务端控制台打印:

 

 小结

1. 编写1个TCP服务端程序
tcp_server_socekt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置端口复用 
tcp_server_socekt.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

2. 获取浏览器发送的http请求报文数据
client_request_data = client_socekt.recv(1024).decode()
print(client_request_data)
3. 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
# 应答数据
response_data = (response_line + response_header + "\r\n").encode() + response_body
client_socekt.send(response_data)
4. HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。
client_socekt.close()

  

标签:Web,socket,自研,报文,client,服务器,socekt,data,response
From: https://www.cnblogs.com/allenxx/p/17647350.html

相关文章

  • 搭建Python⾃带静态Web服务器
    说明Python自带的静态Web服务器可以通过使用http.server模块来实现。步骤打开命令行终端,进入要作为静态文件根目录的文件夹。运行以下命令启动静态Web服务器:Python2.x版本:python-mSimpleHTTPServer<port>Python3.x版本:python-mhttp.server<port> <port>是可选参......
  • iwebsec-xss 01 反射型xss
    01、题目分析反射型跨站脚本攻击本质上是构造恶意连接的形式,诱导用户打开,由于链接内所携带的参数会回显于页面中或作为页面的处理数据源,最终造成XSS攻击。02、xss这一题已经提示是反射型xss了,而且还有提示,可以注入的参数为name,所以直接在参数值中输入js代码即可?name=<script......
  • iwebsec-xss 02 存储型xss
    01、题目分析存储型xss是将js代码存储在服务器端,当用户访问网页的时候,就会执行js代码,常见于留言板等功能模块02、xss这一题已经提示是存储型ss了,而且还有输入框,所以直接在输入框中输入js代码即可<script>alert(1)</script>可以发现js代码被成功执行了03、源码分析</form......
  • iwebsec-xss 03 DOM型xss
    01、题目分析DOM型比较与存储型不一样的是,存储型是将js代码存放在数据库中,而dom型是在客户端插入恶意代码,不涉及后端02、xss查看前端代码可以发现,有一个domxss函数,这段代码的作用是获取id为"input"的元素的值,并将其设置为id为"output"的元素的innerHTML属性所以直接在输入框......
  • iwebsec-xss 04 xss修复示例
    01、题目分析这一题就不是解题了,是教如何实现防范xss漏洞的,因此我们重点分析源码,是如何实现防范xss的02、xss按照第一关的xss方式去访问,可以明显发现没有出弹窗,而是把js代码作为文字输出到界面上03、源码分析<?phprequire_once'../header.php';?><html> <head> <titl......
  • RunnerGo中WebSocket、Dubbo、TCP/IP三种协议接口测试详解
    大家好,RunnerGo作为一款一站式测试平台不断为用户提供更好的使用体验,最近得知RunnerGo新增对,WebSocket、Dubbo、TCP/IP,三种协议API的测试支持,本篇文章跟大家分享一下使用方法。WebSocket协议WebSocket是一种在单个TCP连接上进行全双工通信的API技术。相比于传统的HTTP请求,We......
  • Streamlit项目:基于讯飞星火认知大模型开发Web智能对话应用
    1前言科大讯飞公司于2023年8月15日发布了讯飞认知大模型V2.0,这是一款集跨领域知识和语言理解能力于一体的新一代认知智能大模型。前日,博主对讯飞认知大模型进行了详细的分析,详情请至博文《星星之火:国产讯飞星火大模型的实际使用体验(与GPT对比)》了解。总的来说,讯飞星火认知大模......
  • RunnerGo中WebSocket、Dubbo、TCP/IP三种协议接口测试详解
    大家好,RunnerGo作为一款一站式测试平台不断为用户提供更好的使用体验,最近得知RunnerGo新增对,WebSocket、Dubbo、TCP/IP,三种协议API的测试支持,本篇文章跟大家分享一下使用方法。WebSocket协议WebSocket是一种在单个TCP连接上进行全双工通信的API技术。相比于传统的HTTP请......
  • RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估
    前言上一期讲到YCSB在RISC-V服务器上对MySQL进行性能测试(RISC-V公测平台发布·使用YCSB测试SG2042上的MySQL性能),在这一期文章中,我们继续深入讨论RISC-V+数据库的应用。本期就继续利用HS-2平台来测试数据库软件在RISC-V服务器上的兼容性。参与此次实验的数据库如下:RedisMongo......
  • centos7 DHCP服务器配置
    dhcp服务配置过程1、安装包(插入光盘下载或者上一篇的网络下载都可以)安装: 挂载光盘:mount /dev/cdrom /media     cd /media/Packages   rpm -ivh dhcp-4.....(Tab)2、修改主配置文件:vim /etc/dhcp/dhcpd.conf //打开配置文件subnet20.0.0.0netmask255.......