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实现的ini文件操作类分享
Nov 20 Python
Python中的高级函数map/reduce使用实例
Apr 13 Python
python 查找字符串是否存在实例详解
Jan 20 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
python xpath获取页面注释的方法
Jan 14 Python
python Tkinter版学生管理系统
Feb 20 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
Python类成员继承重写的实现
Sep 16 Python
关于python类SortedList详解
Sep 04 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
如何开发一个虚拟域名系统
2006/10/09 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中的pass语句使用方法讲解
2015/05/14 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
Python三级菜单的实例
2017/09/13 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
超市促销实习自我鉴定
2013/09/23 职场文书
党员培训思想汇报
2014/01/07 职场文书
促销活动策划方案
2014/01/12 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
订货会邀请函
2015/01/31 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
离职告别感言
2015/08/04 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
MySQL约束超详解
2021/09/04 MySQL
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript