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使用点操作符访问字典(dict)数据的方法
Mar 16 Python
python连接mysql实例分享
Oct 09 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
python和opencv实现抠图
Jul 18 Python
python使用turtle绘制国际象棋棋盘
May 23 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
python小程序实现刷票功能详解
Jul 17 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Django调用百度AI接口实现人脸注册登录代码实例
Apr 23 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
详解JavaScript树结构
2017/01/09 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
《画家乡》教学反思
2014/04/22 职场文书
小学生常见病防治方案
2014/06/06 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
高三英语教学计划
2015/01/23 职场文书
学习与创新自我评价
2015/03/09 职场文书
政审证明范文
2015/06/19 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL