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实现的登录和操作开心网脚本分享
Jul 09 Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
python列表使用实现名字管理系统
Jan 30 Python
pandas删除指定行详解
Apr 04 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
python对一个数向上取整的实例方法
Jun 18 Python
python Tkinter的简单入门教程
Apr 11 Python
浅谈Python协程asyncio
Jun 20 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/01/05 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
对python:print打印时加u的含义详解
2018/12/15 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
教师师德教育的自我评价
2013/10/31 职场文书
大学军训自我鉴定
2013/12/15 职场文书
项目合作意向书范本
2014/04/01 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
烈士陵园观后感
2015/06/08 职场文书
Selenium浏览器自动化如何上传文件
2022/04/06 Python