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中datetime常用时间处理方法
Jun 15 Python
Python实现字符串格式化的方法小结
Feb 20 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
python获取中文字符串长度的方法
Nov 14 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
Python多图片合并PDF的方法
Jan 03 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
详解Python3 pandas.merge用法
Sep 05 Python
Python 如何反方向迭代一个序列
Jul 28 Python
Python3 用什么IDE开发工具比较好
Nov 28 Python
python上下文管理的使用场景实例讲解
Mar 03 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
jQuery插件开发基础简单介绍
2013/01/07 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
python time模块用法实例详解
2014/09/11 Python
python fabric实现远程部署
2017/01/05 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
Python中的流程控制详解
2021/02/18 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
C#基础面试题
2016/10/17 面试题
优秀毕业生自我鉴定
2014/01/19 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
伊索寓言教学反思
2014/05/01 职场文书
体育节口号
2014/06/19 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
MySQL系列之四 SQL语法
2021/07/02 MySQL