Python实现简单http服务器


Posted in Python onApril 12, 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 pickle模块用法实例
Apr 14 Python
Python的time模块中的常用方法整理
Jun 18 Python
python 性能优化方法小结
Mar 31 Python
基于python爬虫数据处理(详解)
Jun 10 Python
Python之reload流程实例代码解析
Jan 29 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
Python实现在某个数组中查找一个值的算法示例
Jun 27 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
Python实现自动访问网页的例子
Feb 21 Python
python中使用np.delete()的实例方法
Feb 01 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
Python实现一个服务器监听多个客户端请求
Apr 12 #Python
python使用socket创建tcp服务器和客户端
Apr 12 #Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 #Python
Java与Python两大幸存者谁更胜一筹呢
Apr 12 #Python
python打包压缩、读取指定目录下的指定类型文件
Apr 12 #Python
pandas全表查询定位某个值所在行列的方法
Apr 12 #Python
Python Pandas找到缺失值的位置方法
Apr 12 #Python
You might like
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
python字符串替换示例
2014/04/24 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python工厂函数用法实例分析
2018/05/14 Python
使用matplotlib画散点图的方法
2018/05/25 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
应用服务器有那些
2012/01/19 面试题
企业三严三实学习心得体会
2014/10/13 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
党员承诺书范文2015
2015/04/27 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
如何撰写促销方案?
2019/07/05 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL
Flink 侧流输出源码示例解析
2022/09/23 Servers