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使用urllib模块开发的多线程豆瓣小站mp3下载器
Jan 16 Python
python监控网卡流量并使用graphite绘图的示例
Apr 27 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
举例讲解Python常用模块
Mar 08 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
Python matplotlib实时画图案例
Apr 23 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
Python超详细分步解析随机漫步
Mar 17 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
Python 学习笔记
2008/12/27 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
Python 如何查找特定类型文件
2020/08/17 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
Eclipse面试题
2014/03/22 面试题
通信专业个人自我鉴定
2013/10/21 职场文书
办理生育手续介绍信
2014/01/14 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
校运动会广播稿300字
2014/10/07 职场文书
公司市场部岗位职责
2015/04/15 职场文书
失恋33天观后感
2015/06/11 职场文书
小学运动会前导词
2015/07/20 职场文书
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技