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设置检查点简单实现代码
Jul 01 Python
在Python中使用Mako模版库的简单教程
Apr 08 Python
Python yield 使用浅析
May 28 Python
Python简明入门教程
Aug 04 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
python如何定义带参数的装饰器
Mar 20 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
python画双y轴图像的示例代码
Jul 07 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
python super()函数的基本使用
Sep 10 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中利用post传递字符串重定向的实现代码
2011/04/21 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
2010年最佳jQuery插件整理
2010/12/06 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
Javascript的闭包详解
2014/12/26 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
Python线程详解
2015/06/24 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python类装饰器实现方法详解
2018/12/21 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
深入浅析python的第三方库pandas
2020/02/13 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
个人求职信范文分享
2014/01/06 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
班主任个人工作反思
2014/04/28 职场文书
学校个人对照检查材料
2014/08/26 职场文书
出差报告格式模板
2014/11/06 职场文书
Python函数中的不定长参数相关知识总结
2021/06/24 Python
pycharm无法安装cv2模块问题
2022/05/20 Python