python 编写简单网页服务器


本文摘自php中文网,作者不言,侵删。

这篇文章主要介绍了关于python 编写简单网页服务器,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

IDE:Pycharm

sever.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

#!/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

1

2

3

4

5

6

7

8

9

10

11

<!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>

运行server.py

在浏览器中输入localhost:1212

相关推荐:

Python编写一个优美的下载器

Python编写简单网络爬虫抓取视频

以上就是python 编写简单网页服务器的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

实例讲解Python基于回溯法子集树模板解决旅行商问题(tsp)

Python中装饰器是什么?Python中装饰器的介绍

Python和go语言有区别吗

Python安装库安装失败怎么解决

Python中字符串可以遍历吗

深入解析Python--currying函数

Python里floor怎么用

Python爬取文章实例教程

Python的web服务器相关知识点

从此驾驭图表的神器matplotlib,Python强大的作图工具

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...