python3实现微型的web服务器

实验目的:用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()

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

(0)

相关推荐

  • python创建一个最简单http webserver服务器的方法

    本文实例讲述了python创建一个最简单http webserver服务器的方法.分享给大家供大家参考.具体实现方法如下: import sys import BaseHTTPServer from SimpleHTTPServer import SimpleHTTPRequestHandler Handler = SimpleHTTPRequestHandler Server = BaseHTTPServer.HTTPServer Protocol = "HTTP/1.0" if s

  • python实现静态web服务器

    HTTP协议简介 HTTP请求 1:浏览器首先向服务器发送HTTP请求,请求包括: 方法:GET还是POST,GET仅请求资源,POST会附带用户数据: 路径:/full/url/path: 域名:由Host头指定:Host: www.sina.com以及其他相关的Header: 如果是POST,那么请求还包括一个Body,包含用户数据 2:服务器向浏览器返回HTTP响应,响应包括: 响应代码:200表示成功,3xx表示重定向,4xx表示客户端发送的请求有错误,5xx表示服务器端处理时发生了错误

  • Python 搭建Web站点之Web服务器与Web框架

    之前用 Django 做过一个小的站点,感觉Django太过笨重,于是就准备换一个比较轻量级的 Web 框架来玩玩.Web.py 作者已经挂掉,项目好久没有更新,所以不准备用它.而 Flask 也是一个成熟的轻量级 Web 框架,在 github 上有众多的 Star 和 Fork,文档和扩展也很丰富,值得学习. 学习一个框架最好的方式就是用框架做一个项目,在实战中理解掌握框架.这里我用 Flask 框架,使用 Mysql 数据库做了一个 论坛系统 .麻雀虽小,五脏俱全,论坛效果图如下: 论坛系

  • Python实现的检测web服务器健康状况的小程序

    对web服务器做健康检查,一般我们都是用curl库(不管是php,perl的还是shell的),大致的方法一致: 复制代码 代码如下: curl -I -s www.qq.com  |head -1|awk '{ health = $2=="200"?"server is ok":"server is bad"}END{print health}' server is ok 说白了这些方式都是封装了curl库的,另外还有一些关于http的模块,例

  • Python面向对象之Web静态服务器

    本文实例为大家分享了Python Web静态服务器的具体代码,供大家参考,具体内容如下 功能:用户访问服务器可以返回指定页面 步骤: 1.创建服务器类 2.创建初始化服务器配置方法 3.创建接收客户端请求的方法 4.创建发送响应报文给客户端方法 import socket import re import multiprocessing # Http服务器类 class HttpServer: # 初始化属性 def __init__(self): # 创建套接字 self.tcp_server

  • Python基于twisted实现简单的web服务器

    本文实例讲述了Python基于twisted实现简单的web服务器,分享给大家供大家参考.具体方法如下: 1. 新建htm文件夹,在这个文件夹中放入显示的网页文件 2. 在htm文件夹的同级目录下,建立web.py,web.py的内容为: from twisted.web.resource import Resource from twisted.web import server from twisted.web import static from twisted.internet impo

  • Python Web服务器Tornado使用小结

    首先想说的是它的安全性,这方面确实能让我感受到它的良苦用心.这主要可以分为两点: 一.防范跨站伪造请求(Cross-site request forgery,简称 CSRF 或 XSRF) CSRF 的意思简单来说就是,攻击者伪造真实用户来发送请求. 举例来说,假设某个银行网站有这样的 URL:http://bank.example.com/withdraw?amount=1000000&for=Eve当这个银行网站的用户访问该 URL 时,就会给 Eve 这名用户一百万元.用户当然不会轻易地点

  • Python Web程序部署到Ubuntu服务器上的方法

    在本文记录了我在Ubuntu中部署Flask Web站点的过程, 其中包括用户创建.代码获取.Python3环境的安装.虚拟环境设置.uWSGI启动程序设置,并将Nginx作为前端反向代理.希望对各位有所帮助. 建立一个Python Web程序专用账户 adduser haseo vim /etc/sudoers #将haseo用户加入导sudo用户清单中 sudo usermod -a -G www-data haseo 安装Python3并配置程序运行环境 1.更新Ubuntu的软件库 su

  • Python实现简易版的Web服务器(推荐)

    下面给大家介绍python实现简易版的web服务器,具体内容详情大家通过本文学习吧! 1.请自行了解HTTP协议 http://www.jb51.net/article/133883.htm(点击跳转) 2.创建Socket服务,监听指定IP和端口 3.以阻塞方式等待客户端连接 4.读取客户端请求数据并进行解析 5.准备服务器运行上下文 6.处理客户端请求数据 7.根据用户请求路径读取文件 8.返回响应结果给客户端 9.程序入口 10.目录结构 11.运行 python wsgiserver.p

  • python制作websocket服务器实例分享

    一.开始的话 使用python简单的实现websocket服务器,可以在浏览器上实时显示远程服务器的日志信息. 之前做了一个web版的发布系统,但没实现在线看日志,每次发布版本后,都需要登录到服务器上查看日志,非常麻烦,为了偷懒,能在页面点几下按钮完成工作,这几天查找了这方面的资料,实现了这个功能,瞬间觉的看日志什么的,太方便了,以后也可以给开发们查日志,再也不用麻烦运维了,废话少说,先看效果吧. 二.代码 需求:在web上弹出iframe层来实时显示远程服务器的日志,点击stop按钮,停止日志

随机推荐