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之用Python计算
Sep 12 Python
进一步理解Python中的函数编程
Apr 13 Python
判断网页编码的方法python版
Aug 12 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
python使用turtle绘制国际象棋棋盘
May 23 Python
python 函数中的参数类型
Feb 11 Python
Python中pass的作用与使用教程
Nov 13 Python
Python之多进程与多线程的使用
Feb 23 Python
python pygame 开发五子棋双人对弈
May 02 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 什么是PEAR?
2009/03/19 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
推荐dojo学习笔记
2007/03/24 Javascript
js表格分页实现代码
2009/09/18 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
webpack打包优化的几个方法总结
2020/02/10 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
python 网络编程详解及简单实例
2017/04/25 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
使用python turtle画高达
2020/01/19 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
vscode调试django项目的方法
2020/08/06 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
网络研修随笔感言
2015/11/18 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android