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脚本
Feb 10 Python
python进程类subprocess的一些操作方法例子
Nov 22 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
Python编程中的文件操作攻略
Oct 16 Python
Python 列表理解及使用方法
Oct 27 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
Dec 09 Python
全面分析Python的优点和缺点
Feb 07 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python 画函数曲线示例
Dec 04 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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三元运算符的结合性介绍
2012/01/10 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
PHP实现简单登录界面
2019/10/23 PHP
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
window下eclipse安装python插件教程
2017/04/24 Python
Python实现完整的事务操作示例
2017/06/20 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
体育教师工作总结的自我评价
2013/10/10 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
2014年终工作总结范本
2014/12/15 职场文书
消防演习通知
2015/04/25 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
python中 Flask Web 表单的使用方法
2022/05/20 Python