socket 简单实现HTTP服务器
2024-09-06 21:23:54
# -*- coding: utf-8 -*-
# @Time : 2019-07-17 1:39
# @File : 网络socket实现http服务器.py
# @Software: PyCharm import socket
import re def server_conn(conn,file_name):
# 1.响应头部
if file_name == '/index.html':
# 可换成HTML本地文件
response = "HTTP/1.1 200 OK \r\n"
# 2.响应body
response += "\r\n"
response += "<h1> index </h1>"
# 3.发送请求
conn.sendall(bytes(response, encoding="utf-8"))
else:
response = "HTTP/1.1 404 OK \r\n"
# 2.响应body
response += "\r\n"
response += "<h1> pages not found </h1>"
# 3.发送请求
conn.sendall(bytes(response, encoding="utf-8"))
pass def main(host, port):
# 1.创建套接字
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
# 2.绑定
server.bind((host, port))
# 3.监听
server.listen(128)
# 4.连接
while True:
conn, address = server.accept()
# 接收客户端消息,最大字节数1024
client_mess = conn.recv(1024)
# 接收浏览器返回数据
client_content = str(client_mess, encoding="utf-8").splitlines()
# 切割匹配访问路径
file_name = re.match(r"[^/]+(/[^ ]*)",client_content[0])
if file_name:
file_name1 = file_name.group(1)
if file_name1 == "/":
file_name1 = "/index.html"
print(file_name1)
# print(client_content)
server_conn(conn,file_name1)
conn.close()
pass if __name__ == "__main__":
main("127.0.0.1", 7890) # 注 : http协议,三次握手,四次挥手
最新文章
- JS清除IE浏览器缓存的方法
- sql中union和union all的用法
- HTML 中 META的作用
- 1134 铺地毯【2011年NOIP全国联赛提高组】
- js中的scroll和offset 的使用比较
- android 解析XML方式(二)
- Windwos平台上ffmpeg解码音频并且保存到wav文件中
- BZOJ 1806 IOI2007 Miners 矿工配餐 动态规划
- COJ 2124 Day8-例1
- Copy Constructor in Java
- 1.1 selenium 安装
- matlab取模与取余
- html 初始化
- 利用Unity3D实现多平台增强现实网络游戏的一种方案
- rsync技术报告(翻译)
- MT过安全狗增加用户
- python制作爬虫爬取京东商品评论教程
- struts2快速入门
- ASP.NET Aries 开发框架(已支持.NET Core)
- LitePal 数据库使用方法(最新2.0LitePal数据库适用)
热门文章
- Eclipse使用Alibaba Cloud Toolkit极速部署项目
- NODEJS 使用 sqlite3 本地文件数据库
- Windows玩转Kubernetes系列4-搭建K8S Dashboard
- 安卓平台SQLite数据库基础操作总结
- 本地文件包含(LFI)漏洞
- LOJ#508. 「LibreOJ NOI Round #1」失控的未来交通工具
- Codeforces Round #615 (Div. 3) 补题记录
- 在Spring中使用嵌入式数据库-H2
- Turtle模块基本方法和使用(画布)
- IDEA全局搜索