静态Web服务器
可以发出请求的浏览器提供静态文档的程序。
平时我们浏览百度新闻数据的时候,每天的新闻数据都会发生变化,那访问的这个页面就是动态的,而我们开发的是静态的,页面的数据不会发生变化。
搭建Python自带静态Web服务器
如何搭建Python自带的静态Web服务器(windows可以实现资源共享的目的)
语法:python -m http.server 端口号
1.win+R 输入cmd进入命令指令窗口
2.切换目录,选择目录建立网页
3.输入python -m http.server 8080
4.打开浏览器输入自己的ip+端口号,例如127.0.0.1:8080,静态web就搭建完成。
开发自己的静态Web服务器
实现步骤:
编写一个TCP服务端程序
获取浏览器发送的http请求报文数据
读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。
HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。
import socket
def main():
#创建TCP socket
tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
address = ('127.0.0.1',8888)
#绑定地址
tcp_server.bind(address)
#监听
tcp_server.listen()
while True:
#等待连接
new_tcp, addr = tcp_server.accept()
recv_data = new_tcp.recv(1024).decode('utf-8')
print(recv_data)
#对文件进行解码
with open('static/test.html','rb') as file:
file_data = file.read()
#http报文
#响应行
response_line = 'HTTP /1.1 200\r\n'
#响应头
response_header = 'SERVER:version 1.0\r\n'
#响应体
response_body = file_data
#响应报文
response_data=(response_line+response_header+'\r\n').encode('utf-8')+response_body
#发送响应报文
new_tcp.send(response_data)
new_tcp.close()
tcp_server.close()
if __name__ == '__main__':
main()
返回指定页面数据
import socket,os
def info(fn):
path = os.getcwd()
if fn in ["/photo.html",'/chaoge.html']:
pass
else:
fn = '/404.html'
with open(path+fn,'rb') as file:
content = file.read()
return content
def main():
tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server.bind(('127.0.0.1',8888))
tcp_server.listen()
while True:
new_tcp_server ,addr = tcp_server.accept()
data_1=new_tcp_server.recv(1024).decode('utf-8')
g_info=(data_1.split(' ')[1])
response_line='HTTP/1.1 200 OK\r\n'
response_header = 'My Web\r\n'
response_info = info(g_info)
data = (response_line+response_header+'\r\n').encode('utf-8')+response_info
new_tcp_server.send(data)
new_tcp_server.close()
tcp_server.close()
if __name__ == '__main__':
main()
原文链接:https://blog.csdn.net/weixin_45389821/article/details/111937742