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 文件与目录操作
Dec 24 Python
Python生成随机密码的方法
Jun 16 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
python实现图片插入文字
Nov 26 Python
Python利用FFT进行简单滤波的实现
Feb 26 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
Python求凸包及多边形面积教程
Apr 12 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python request 模块详细介绍
Nov 10 Python
Python读取图像并显示灰度图的实现
Dec 01 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上传图片、删除图片实现代码
2010/05/12 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
利用javascript查看html源文件
2006/11/08 Javascript
javascript实现的网页局布刷新效果
2008/12/01 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
angular.bind使用心得
2015/10/26 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
使用python绘制二维图形示例
2019/11/22 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Python实现一个论文下载器的过程
2021/01/18 Python
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
高中生活自我鉴定
2014/01/18 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
学习经验交流会总结
2015/11/02 职场文书
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL