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通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 Python
Python中turtle作图示例
Nov 15 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
Python处理文本换行符实例代码
Feb 03 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
python 删除非空文件夹的实例
Apr 26 Python
python实现定时提取实时日志程序
Jun 22 Python
Python2包含中文报错的解决方法
Jul 09 Python
基于python二叉树的构造和打印例子
Aug 09 Python
Python sep参数使用方法详解
Feb 12 Python
Pytorch 如何实现常用正则化
May 27 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
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
非常好的js代码
2006/06/27 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
javascript每日必学之封装
2016/02/23 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
Python3遍历目录树实现方法
2015/05/22 Python
Python深入06——python的内存管理详解
2016/12/07 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
实例详解Python模块decimal
2019/06/26 Python
python GUI计算器的实现
2020/10/09 Python
毕业生求职的求职信
2013/12/05 职场文书
仓库门卫岗位职责
2013/12/22 职场文书
护士求职自荐信范文
2014/03/19 职场文书
搞笑老公保证书
2015/02/26 职场文书
公司停电通知
2015/04/15 职场文书