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获得图片base64编码示例
Jan 16 Python
Python进行数据提取的方法总结
Aug 22 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
python3实现跳一跳点击跳跃
Jan 08 Python
python3调用R的示例代码
Feb 23 Python
VSCode下好用的Python插件及配置
Apr 06 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
深入了解python中元类的相关知识
Aug 29 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 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制作静态网站的模板框架(一)
2006/10/09 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
python tkinter实现屏保程序
2019/07/30 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
中英文求职信范文
2014/01/27 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
财产公证书
2014/04/10 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers