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脚本实现集群检测和管理功能
Mar 06 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
python pygame实现球球大作战
Nov 25 Python
python脚本后台执行方式
Dec 21 Python
python DataFrame转dict字典过程详解
Dec 26 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 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
基于文本的访客签到簿
2006/10/09 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
JS中数据结构之栈
2019/01/01 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
深入浅析python继承问题
2016/05/29 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
python 监控logcat关键字功能
2020/09/04 Python
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
求网格中的黑点分布
2013/11/06 面试题
两只小狮子教学反思
2014/02/05 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
Golang Web 框架Iris安装部署
2022/08/14 Python