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实现对PDF文件的OCR识别
Aug 05 Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python生成带有表格的图片实例
Feb 03 Python
Python秒算24点实现及原理详解
Jul 29 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
利用python画出AUC曲线的实例
Feb 28 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
pytorch中的numel函数用法说明
May 13 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/09/29 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
javascript引导程序
2008/10/26 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
jsonp原理及使用
2013/10/28 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
详解Python if-elif-else知识点
2018/06/11 Python
Python基础之字典常见操作经典实例详解
2020/02/26 Python
Python程序慢的重要原因
2020/09/04 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
美容院考勤制度
2014/01/30 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
教师节老师寄语
2015/05/28 职场文书
青春雷锋观后感
2015/06/10 职场文书
城南旧事观后感
2015/06/11 职场文书
信息简报范文
2015/07/21 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
Python机器学习之决策树和随机森林
2021/07/15 Javascript
以下牛机,你有几个
2022/04/05 无线电
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技