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开发常用的一些开源Package分享
Feb 14 Python
Python 含参构造函数实例详解
May 25 Python
Python编程求质数实例代码
Jan 31 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 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
javascript 获取图片颜色
2009/04/05 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
React组件refs的使用详解
2018/02/09 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
python实现计算资源图标crc值的方法
2014/10/05 Python
python爬虫使用cookie登录详解
2017/12/27 Python
使用Python函数进行模块化的实现
2019/11/15 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
html+css3实现的登录界面
2020/12/09 HTML / CSS
猫咪家具:CatsPlay
2018/11/03 全球购物
MySQL面试题目集锦
2016/04/14 面试题
教室标语大全
2014/06/21 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
行政复议决定书
2015/06/24 职场文书
大学开学感言
2015/08/01 职场文书
话题作文之呼唤
2019/12/18 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
超外差式晶体管收音机的组装与统调
2021/04/22 无线电
使用golang编写一个并发工作队列
2021/05/08 Golang
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android