python实现简单http服务器功能


Posted in Python onSeptember 17, 2018

背景

写一个python脚本,实现简单的http服务器功能:

1.浏览器中输入网站地址:172.20.52.163:20014

2.server接到浏览器的请求后,读取本地的index.html文件的内容,回发给浏览器

代码实现

server.py

#!/usr/bin/python
import socket
import signal
import errno
from time import sleep 
 
 
def HttpResponse(header,whtml):
 f = file(whtml)
 contxtlist = f.readlines()
 context = ''.join(contxtlist)
 response = "%s %d\n\n%s\n\n" % (header,len(context),context)
 return response
 
def sigIntHander(signo,frame):
 print 'get signo# ',signo
 global runflag
 runflag = False
 global lisfd
 lisfd.shutdown(socket.SHUT_RD)
 
strHost = "172.20.52.163"
HOST = strHost #socket.inet_pton(socket.AF_INET,strHost)
PORT = 20014
 
httpheader = '''\
HTTP/1.1 200 OK
Context-Type: text/html
Server: Python-slp version 1.0
Context-Length: '''
 
lisfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
lisfd.bind((HOST, PORT))
lisfd.listen(2)
 
signal.signal(signal.SIGINT,sigIntHander)
 
runflag = True
while runflag:
 try:
  confd,addr = lisfd.accept()
 except socket.error as e:
  if e.errno == errno.EINTR:
   print 'get a except EINTR'
  else:
   raise
  continue
 
 if runflag == False:
  break;
 
 print "connect by ",addr
 data = confd.recv(1024)
 if not data:
  break
 print data
 confd.send(HttpResponse(httpheader,'index.html'))
 confd.close()
else:
 print 'runflag#',runflag
 
print 'Done'

index.html

<html>
 <head>
 <title>Python Server</title>
 </head>
 <body>
 <h1>Hello python</h1>
 <p>Welcom to the python world</br>
 </body>
</html>

测试

测试结果:

root@cloud2:~/slp/pythonLearning/socket# ./server_v1.py
connect by  ('172.20.52.110', 6096)
GET / HTTP/1.1
Host: 172.20.52.163:20014
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

浏览器

python实现简单http服务器功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的闭包实例详解
Aug 29 Python
Python 的内置字符串方法小结
Mar 15 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
tensorflow 实现自定义梯度反向传播代码
Feb 10 Python
基于django 的orm中非主键自增的实现方式
May 18 Python
Python工程师必考的6个经典面试题
Jun 28 Python
python爬虫要用到的库总结
Jul 28 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 Python
pytorch 预训练模型读取修改相关参数的填坑问题
Jun 05 Python
python实现自动登录
Sep 17 #Python
python发送告警邮件脚本
Sep 17 #Python
python实现zabbix发送短信脚本
Sep 17 #Python
python通过zabbix api获取主机
Sep 17 #Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 #Python
python实现Zabbix-API监控
Sep 17 #Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 #Python
You might like
PHP 文件类型判断代码
2009/03/13 PHP
PHP session有效期问题
2009/04/26 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
Vue.js用法详解
2017/11/13 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python类的动态修改的实例方法
2017/03/24 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
机关单位动员会主持词
2014/03/20 职场文书
党员干部公开承诺书
2014/03/26 职场文书
2014年村委会工作总结
2014/11/24 职场文书
小学感恩节活动总结
2015/03/24 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL