Python实现一个最基础的http服务器

“”“这段代码主要实现了一个最基础的http服务器”“”

# 导入模块
import socket
import re
import threading

# 定义http服务器类
class Sever(object):
# 初始化数据
def init(self):
# 创建tcp套接字
**self.soc_sever = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器端地址
addr = (“”, 8888)
self.soc_sever.bind(addr)
# 服务器端口复用
self.soc_sever.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 设置被动监听
self.soc_sever.listen(128)

def connect(self):
“”“连接浏览器”“”
while True:
# 等待浏览器连接
soc_client, addr_client = self.soc_sever.accept()
# 创建线程,实现数据传递(处理)
threading.Thread(target=self.client_data, args=(soc_client,)).start()
# 关闭服务器套接字
self.soc_sever.close()

def client_data(self, soc_client):
“”“数据处理”“”
# 接收浏览器数据
data = soc_client.recv(1024).decode(‘utf-8’)
# 判断是否收到数据
if not data:
print(“接收失败”)
soc_client.close()
return
# 正则筛选地址信息
http_ = re.match(“[^/]+(/[^ ]*) “, data).group(1)
# 如果地址信息为文件,这里只演示静态,动态可以用多if实现
if http_.endswith(‘.html’):
try:
# 打开静态文件
with open(‘./html%s’ % http_, ‘r’) as f:
# 读取静态文件内容
file_content = f.read()
# file_name = ‘./html%s’ %http_
body = head + ‘\r\n’ + file_content
# 服务器端发送页面内容给浏览器
soc_client.send(body.encode(‘utf-8’))
except Exception as ex:
prompt = “404 Not Found”
content = head + ‘\r\n’ + prompt
soc_client.send(content.encode(“utf-8”))
# print(“404 Not Found”)
else:
try:
# 打开非html文件
with open(‘./html%s’ % http_, ‘rb’) as d:
data_content = d.read()
con = head + “\r\n”
soc_client.send(con.encode(“utf-8”))
# 这里因为图片等文件本身是二进制所以不需要再编码
soc_client.send(data_content)
except Exception:
content = head + ‘\r\n’ + ‘404 Not Found!!!’
soc_client.send(content.encode(“utf-8”))
# 关闭浏览器套接字
soc_client.close()

def main():
“”“主函数”“”
# 等待浏览器连接
soc_sever.connect()

if name == ‘main‘:
main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值