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的lambda匿名函数的简单介绍
Apr 25 Python
python 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
python中的sort方法使用详解
Jul 25 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
python中的格式化输出用法总结
Jul 28 Python
Python实现基本线性数据结构
Aug 22 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
python查看数据类型的方法
Oct 12 Python
如何基于python测量代码运行时间
Dec 25 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
python中scipy.stats产生随机数实例讲解
Feb 19 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中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
jquery蒙版控件实现代码
2010/12/08 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
python3+PyQt5实现柱状图
2018/04/24 Python
python3.6实现学生信息管理系统
2019/02/21 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
文化宣传方案
2014/03/13 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
集中整治工作方案
2014/05/01 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫