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 远程统计文件代码分享
May 14 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Python时间获取及转换知识汇总
Jan 11 Python
Python 基础教程之str和repr的详解
Aug 20 Python
Python实现Restful API的例子
Aug 31 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
Python2与Python3的区别详解
Feb 09 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
如何完美的建立一个python项目
Oct 09 Python
python调用win32接口进行截图的示例
Nov 11 Python
Python基础之元类详解
Apr 29 Python
pytorch 如何使用float64训练
May 24 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和ACCESS写聊天室(八)
2006/10/09 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
让你的网站可编辑的实现js代码
2009/10/19 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
python的几种开发工具介绍
2007/03/07 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
python实现在线翻译
2020/06/18 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
作风转变心得体会
2014/09/02 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS