• 01 基础版web框架


    01 基础版web框架

    服务器serverpython程序(基础版):

     

     1 import socket
     2 server=socket.socket()
     3 server.bind(("127.0.0.1",8888))
     4 server.listen() 
     5 conn,client_addr=server.accept() 
     6 http_request=conn.recv(1024).decode("utf-8")#接收到的客户端http请求内容
     7 print(http_request) 
     8 #conn.send(b"HTTP/1.1200ok
    
    ")
     9 #conn.send(b"hello")
    10 conn.send("HTTP/1.1200ok
    
    hello".encode())#发送信息前必须先发送协议模式 
    11 
    12 #socket是应用层和传输层之间的抽象层,每次都有协议,协议就是消息格式,那么传输层的消息格式我们不用管,因为socket帮我们搞定了,但是应用层的协议还是需要咱们自己遵守的,所以再给浏览器发送消息的时候,如果没有按照应用层的消息格式来写,那么你返回给浏览器的信息,浏览器是没法识别的。而应用层的协议就是我们的HTTP协议,所以我们按照HTTP协议规定的消息格式来给浏览器返回消息就没有问题了

    客户端浏览器访问:

     

    在浏览器地址栏直接输入地址端口:127.0.0.18888

    即可在服务端发起请求:

    1.    域名访问的先访问DNS服务器,解析找到对应的IPport

    2.    客户端将请求内容通过ip和端口向服务器发送

    3.    (客户端请求内容在浏览器的控制台Network中查看)

        

    server端收到的客户端http请求:

    请求行(第一行),请求头部,空行( ),请求数据

    GET / HTTP/1.1

    Host: 127.0.0.1:8888

    Connection: keep-alive

    Upgrade-Insecure-Requests: 1

    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    Accept-Encoding: gzip, deflate, br

    Accept-Language: zh-CN,zh;q=0.9

     

     

    请求第一行以空格隔开:

    GET          :请求方式

       /             :请求文件路径

    HTTP/1.1 :请求的协议及版本号

  • 相关阅读:
    对象的继承关系在数据库中的实现方式和PowerDesigner设计
    Oracle数据库需要修改默认的Profiles,避免用户密码过期
    如何将数据库从SQL Server迁移到MySQL
    NHibernate中对同一个对象的Lazyload要设置一致
    时来运转乎
    如何用VS里的部署实现在Duwamish7安装时的自动创建数据功能
    Windows 2003里的一个小bug?
    DailyBuild全攻略"隆重"发布V1.0
    建议DuDu:实现上传图片能够以目录方式存放.
    如何在VS里的部署中执行一段 .sql 的脚本文件?
  • 原文地址:https://www.cnblogs.com/open-yang/p/11182678.html
Copyright © 2020-2023  润新知