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 字典(Dictionary)操作详解
Mar 11 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
Python2.x与Python3.x的区别
Jan 14 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
python文件读写代码实例
Oct 21 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
django下创建多个app并设置urls方法
Aug 02 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 Python
如何利用python创作字符画
Jun 25 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
PHPCMS的使用小结
2010/09/20 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
javascript实现微信分享
2014/12/23 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
Python中enumerate函数代码解析
2017/10/31 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
个性与发展自我评价
2014/02/11 职场文书
汉语言文学职业规划
2014/02/14 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
一岗双责责任书
2014/04/15 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
golang DNS服务器的简单实现操作
2021/04/30 Golang
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL