python 编写简单网页服务器的实例


Posted in Python onJune 01, 2018

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>

运行server.py

在浏览器中输入localhost:1212

以上这篇python 编写简单网页服务器的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现数通设备端口监控示例
Apr 02 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
在CMD命令行中运行python脚本的方法
May 12 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
python flask中动态URL规则详解
Nov 22 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
解决pytorch 的state_dict()拷贝问题
Mar 03 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Python实现日志实时监测的示例详解
Apr 06 Python
Django中间件实现拦截器的方法
Jun 01 #Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 #Python
详解Python如何生成词云的方法
Jun 01 #Python
Python实现的个人所得税计算器示例
Jun 01 #Python
Python模拟登录的多种方法(四种)
Jun 01 #Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 #Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 #Python
You might like
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
js中有关IE版本检测
2012/01/04 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Python多进程原理与用法分析
2018/08/21 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
Python集合操作方法详解
2020/02/09 Python
python 实现的车牌识别项目
2021/01/25 Python
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
长青弘远的面试题
2012/06/09 面试题
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
妇产科护士自我鉴定
2013/10/15 职场文书
学年自我鉴定
2014/01/16 职场文书
会计专业自我鉴定
2014/02/10 职场文书
《问银河》教学反思
2014/02/19 职场文书
2014年行政工作总结
2014/11/19 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL