# -*- 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协议,三次握手,四次挥手

最新文章

  1. JS清除IE浏览器缓存的方法
  2. sql中union和union all的用法
  3. HTML 中 META的作用
  4. 1134 铺地毯【2011年NOIP全国联赛提高组】
  5. js中的scroll和offset 的使用比较
  6. android 解析XML方式(二)
  7. Windwos平台上ffmpeg解码音频并且保存到wav文件中
  8. BZOJ 1806 IOI2007 Miners 矿工配餐 动态规划
  9. COJ 2124 Day8-例1
  10. Copy Constructor in Java
  11. 1.1 selenium 安装
  12. matlab取模与取余
  13. html 初始化
  14. 利用Unity3D实现多平台增强现实网络游戏的一种方案
  15. rsync技术报告(翻译)
  16. MT过安全狗增加用户
  17. python制作爬虫爬取京东商品评论教程
  18. struts2快速入门
  19. ASP.NET Aries 开发框架(已支持.NET Core)
  20. LitePal 数据库使用方法(最新2.0LitePal数据库适用)

热门文章

  1. Eclipse使用Alibaba Cloud Toolkit极速部署项目
  2. NODEJS 使用 sqlite3 本地文件数据库
  3. Windows玩转Kubernetes系列4-搭建K8S Dashboard
  4. 安卓平台SQLite数据库基础操作总结
  5. 本地文件包含(LFI)漏洞
  6. LOJ#508. 「LibreOJ NOI Round #1」失控的未来交通工具
  7. Codeforces Round #615 (Div. 3) 补题记录
  8. 在Spring中使用嵌入式数据库-H2
  9. Turtle模块基本方法和使用(画布)
  10. IDEA全局搜索