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实现通过代理服务器访问远程url的方法
Apr 29 Python
Python Socket编程详细介绍
Mar 23 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
Python元组常见操作示例
Feb 19 Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 Python
Flask配置Cors跨域的实现
Jul 12 Python
Python龙贝格法求积分实例
Feb 29 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
基于flask实现五子棋小游戏
May 25 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 EOT定界符的使用详解
2008/09/30 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python装饰器decorator介绍
2014/11/21 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
浅析python的优势和不足之处
2018/11/20 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
python 利用zmail库发送邮件
2020/09/11 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
python二维图制作的实例代码
2020/12/03 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
Servlet的生命周期
2013/08/25 面试题
交通安全演讲稿
2014/01/07 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
红与黑读书笔记
2015/06/29 职场文书
公司仓库管理制度
2015/08/04 职场文书
springboot读取nacos配置文件
2022/05/20 Java/Android