Home  >  Article  >  Backend Development  >  Write a simple web server in python

Write a simple web server in python

不言
不言Original
2018-06-02 14:23:492936browse

This article mainly introduces about writing a simple web server in Python, which has certain reference value. Now I share it with everyone. Friends in need can refer to it

IDE: Pycharm

sever.py

#!/bin/python
#-*- coding: UTF-8 -*-
#文件名:server.py
#create by wzh 2017/10/26
import socket  #导入socket模块
import re
from multiprocessing import Process #导入进程模块
#设置静态文件根目录
HTML_ROOT_DIR='./html'
def handle_client(client_socket):
  """处理客户端连接请求"""
  request_data=client_socket.recv(1024)
  print(request_data)
  request_lines=request_data.splitlines()
  for line in request_lines:
    print(line)
  #'GET / HTTP/1.1'
  request_start_line=request_lines[0].decode("utf-8")
  print("*"*10)
  print(request_start_line)
  #提取用户请求的文件名
  file_name=re.match(r"\w+ +(/[^ ]*) ",str(request_start_line)).group(1)
  if "/" == file_name:
    file_name='/index.html'
  #打开文件,读取内容
  try:
    file=open(HTML_ROOT_DIR+file_name,"rb")
  except IOError:
    response_start_line="HTTP/1.1 404 Not Found\r\n"
    response_heads="Server: My server\r\n"
    response_body="The file not found!"
  else:
    file_data=file.read()
    file.close()
    response_start_line="HTTP/1.1 200 ok\r\n"
    response_heads="Server: My server\r\n"
    response_body=file_data.decode("utf-8")
  response=response_start_line+response_heads+"\r\n"+response_body
  print("response data:",response)
  client_socket.send(bytes(response,"utf-8"))
  client_socket.close()
if __name__=="__main__":     #如果直接运行本文件,那么__name__为__main__(此时才运行下面的程序),否则为对应包名
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建socket对象
  s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
  #host = socket.gethostname() # 获取本地主机名
  port = 1212 #
  #print(host)
  s.bind(("", port)) # 绑定端口
  s.listen(5)
  while True:
    c,addr=s.accept()  #建立客户端连接
    print('连接地址',addr)
    handle_client_process=Process(target=handle_client,args=(c,))  #ALT+ENTER快捷键生成函数
    handle_client_process.start()
    c.close()

##index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>My Web</title>
</head>
<h1 align="center">welcome!</h1>
<p align="center">这是一个神奇的网站!</p>
<body>
</body>
</html>

Run server.py

Enter localhost in the browser: 1212

Related recommendations:

Write a beautiful downloader in Python

Write a simple web crawler in Python to capture videos

The above is the detailed content of Write a simple web server in python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn