python3实现微型的web服务器


Posted in Python onSeptember 03, 2019

实验目的:用socket 模拟一个微型的web服务器,当py脚本run起后,实微型web server架起了,然后用本地浏览器访问127.0.0.1:8080(web server的ip_port)时web服务器就会将网页内容传给浏览器,实现网页浏览. 

sw+sys: python3.7.2 + windows10 64bit

本地准备的server端网页为下载的hao123主页(我已上载并上传,点击这里)

通过这个实验让我学到了:

1. 当get请求一个主页时,要完整的显示一个页面(包括文本、图片、css绚染等)是要get多次请求的。

2. respone回复本地页网,open(filepath, rwa)时要特别的注意

import socket
import os
 
curfilepath = os.path.split(os.path.realpath(__file__))[0].replace("\\" , "/")
print(f'curfilepath: {curfilepath}')
 
 
def new_socket_server(new_socket, new_addr):
 if new_addr[0] != '':
 print(f'当前客户端{new_addr}已连接上server端. ')
 
 # 3.接收信息
 file_name = ''
 request_data = new_socket.recv(1024).decode('utf-8')
 if request_data != '':
 print(f'有收到新的信息,信息如下:\n{request_data}')
 file_name = request_data.splitlines()[0].split(' ')[1]
 print(f'file_name: {file_name}')
 if file_name == '/':
  file_name = '/index.html'
  print(f'file_name: {file_name}')
 with open(curfilepath + '/test.txt', 'a+') as f:
  f.write(file_name + '\n')
 
 # 4.回复信息
 try:
 f = open(curfilepath + '/htmltest' + file_name, 'rb')
 except:
 response = 'HTTP/1.1 404 NOT FOUND\r\n'
 response += '\r\n'
 response += '----------file not found-------'
 new_socket.send(response.encode('utf-8'))
 else:
 html_content = f.read()
 f.close()
 response = 'HTTP/1.1 200 OK\r\n' + '\r\n'
 new_socket.send(response.encode('utf-8'))
 new_socket.send(html_content)
 
 
def main():
 # 1.创建socket
 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
 # 2.连接server
 server_ip_port = ('127.0.0.1', 8080)
 tcp_server_socket.bind(server_ip_port)
 tcp_server_socket.listen(128)
 while True:
 print('正在等待client端连接... ...')
 new_socket, new_addr = tcp_server_socket.accept()
 new_socket_server(new_socket, new_addr)
 new_socket.close()
 
 
if __name__ == '__main__':
 main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中用startswith()函数判断字符串开头的教程
Apr 07 Python
Python实现文件按照日期命名的方法
Jul 09 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
使用python爬取B站千万级数据
Jun 08 Python
python3.7简单的爬虫实例详解
Jul 08 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
python 计算两个列表的相关系数的实现
Aug 29 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
Keras loss函数剖析
Jul 06 Python
Python基础之元组与文件知识总结
May 19 Python
Python面向对象之Web静态服务器
Sep 03 #Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 #Python
Django中间件拦截未登录url实例详解
Sep 03 #Python
如何为Python终端提供持久性历史记录
Sep 03 #Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 #Python
python xlwt如何设置单元格的自定义背景颜色
Sep 03 #Python
python实现静态web服务器
Sep 03 #Python
You might like
PHP实现递归无限级分类
2015/10/22 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
了解重排与重绘
2019/05/29 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
python实现井字棋小游戏
2020/03/04 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
工作建议书范文
2019/07/08 职场文书