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中method的参数传递过程
Apr 02 Python
详解Python中类的定义与使用
Apr 11 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
100行python代码实现跳一跳辅助程序
Jan 15 Python
Python从零开始创建区块链
Mar 06 Python
python实时检测键盘输入函数的示例
Jul 17 Python
Python从列表推导到zip()函数的5种技巧总结
Oct 23 Python
基于pandas中expand的作用详解
Dec 17 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
浅析Python3 pip换源问题
Jan 06 Python
详解pandas中iloc, loc和ix的区别和联系
Mar 09 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 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实现AES256加密算法实例
2014/09/22 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
javascript是怎么继承的介绍
2012/01/05 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
node.js基础知识汇总
2020/08/25 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
Python yield 使用浅析
2015/05/28 Python
Python中的__slots__示例详解
2017/07/06 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
Django实现文件上传下载
2019/10/06 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python 绘制正态曲线的示例
2020/09/24 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
雪山饭庄的创业计划书范文
2014/01/18 职场文书
党员民主评议自我评价
2014/10/20 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL