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 StringIO模块实现在内存缓冲区中读写数据
Apr 08 Python
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
python选择排序算法实例总结
Jul 01 Python
python中的计时器timeit的使用方法
Oct 20 Python
Python工程师面试必备25条知识点
Jan 17 Python
在VS2017中用C#调用python脚本的实现
Jul 31 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
Python实现搜索算法的实例代码
Jan 02 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
Django models filter筛选条件详解
Mar 16 Python
使用openCV去除文字中乱入的线条实例
Jun 02 Python
python实现马丁策略的实例详解
Jan 15 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者的疑难问答(2)
2006/10/09 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
Python性能提升之延迟初始化
2016/12/04 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
六查六看个人剖析材料
2014/10/14 职场文书
《法国号》教学反思
2016/02/22 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
MySQL数据库完全卸载的方法
2022/03/03 MySQL