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 web程序
Sep 11 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python实现在cmd窗口显示彩色文字
Jun 24 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
jupyter 实现notebook中显示完整的行和列
Apr 09 Python
利用scikitlearn画ROC曲线实例
Jul 02 Python
python集合的新增元素方法整理
Dec 07 Python
Python爬虫进阶之Beautiful Soup库详解
Apr 29 Python
Python上下文管理器Content Manager
Jun 26 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
PHP 身份验证方面的函数
2009/10/11 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
jquery radio 操作代码
2011/03/16 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
Three.js学习之网格
2016/08/10 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
生物专业个人自荐信范文
2013/11/29 职场文书
幼儿园门卫制度
2014/01/29 职场文书
《童趣》教学反思
2014/02/19 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
Python数据分析之pandas读取数据
2021/06/02 Python
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript