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 相关文章推荐
深入理解Python3 内置函数大全
Nov 23 Python
Python在for循环中更改list值的方法【推荐】
Aug 17 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
python os.fork() 循环输出方法
Aug 08 Python
python求质数列表的例子
Nov 24 Python
python函数声明和调用定义及原理详解
Dec 02 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python如何使用腾讯云发送短信
Sep 17 Python
Flask搭建一个API服务器的步骤
May 28 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
10个实用的脚本代码工具
2010/05/04 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
Python批量更改文件名的实现方法
2017/10/29 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
python3.8下载及安装步骤详解
2020/01/15 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
华润集团网上药店:健一网
2016/09/19 全球购物
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
Overload和Override的区别
2012/09/02 面试题
幼儿园家长会欢迎词
2014/01/09 职场文书
机械个人求职信范文
2014/01/24 职场文书
《日月潭》教学反思
2014/02/28 职场文书
关于青春的演讲稿
2014/05/05 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
护士节活动总结
2014/08/29 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
财务工作个人总结
2015/02/27 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
数据库之SQL技巧整理案例
2021/07/07 SQL Server
Redis实现订单过期删除的方法步骤
2022/06/05 Redis