python实现简单http服务器功能


Posted in Python onSeptember 17, 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 相关文章推荐
Hadoop中的Python框架的使用指南
Apr 22 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
matplotlib绘制动画代码示例
Jan 02 Python
Django权限机制实现代码详解
Feb 05 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
python挖矿算力测试程序详解
Jul 03 Python
Django框架 Pagination分页实现代码实例
Sep 04 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
Mar 31 Python
python 6行代码制作月历生成器
Sep 18 Python
Python特殊属性property原理及使用方法解析
Oct 09 Python
Python从文件中读取数据的方法步骤
Nov 18 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
python实现自动登录
Sep 17 #Python
python发送告警邮件脚本
Sep 17 #Python
python实现zabbix发送短信脚本
Sep 17 #Python
python通过zabbix api获取主机
Sep 17 #Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 #Python
python实现Zabbix-API监控
Sep 17 #Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 #Python
You might like
PHP新手上路(十二)
2006/10/09 PHP
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
详解Python 协程的详细用法使用和例子
2018/06/15 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
python GUI计算器的实现
2020/10/09 Python
python基于openpyxl生成excel文件
2020/12/23 Python
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
大学秋游活动方案
2014/02/11 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
珠宝店促销方案
2014/03/21 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
MySQL存储过程及语法详解
2022/08/05 MySQL