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中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
Numpy掩码式数组详解
Apr 17 Python
python斐波那契数列的计算方法
Sep 27 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
基于Python对数据shape的常见操作详解
Dec 25 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python修改txt文件中的某一项方法
Dec 29 Python
Python实战之制作天气查询软件
May 14 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
Python如何使用神经网络进行简单文本分类
Feb 25 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在线解压ZIP文件的方法
2014/12/30 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python实现批量修改文件名代码
2017/09/10 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
np.random.seed() 的使用详解
2020/01/14 Python
Python通过yagmail实现发送邮件代码解析
2020/10/27 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
工程总经理工作职责
2013/12/09 职场文书
工会主席岗位责任制
2014/02/11 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
预备党员转正材料
2014/12/19 职场文书
同事打架检讨书
2015/05/06 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
现实表现证明材料
2015/06/19 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python