zoukankan      html  css  js  c++  java
  • http服务器三:自己写一个服务器实现转发功能

    一:写一个服务器socket与浏览器进行交互

    服务器收数据

    server.py

    from socket import *
    
    
    server_socket = socket(AF_INET,SOCK_STREAM)
    
    server_socket.bind(("127.0.0.1",10012))
    
    server_socket.listen(128)
    
    client_socket,client_address = server_socket.accept()
    
    recv_data = client_socket.recv(1024)
    
    
    print("接收的数据是",recv_data.decode("gbk"))
    
    
    # 浏览器发送 127.0.0.1:10012后打印
    
    接收的数据是 GET / HTTP/1.1
    Host: 127.0.0.1:10012
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
    Sec-Fetch-Mode: navigate
    Sec-Fetch-User: ?1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Sec-Fetch-Site: none
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9

    服务器给浏览器发数据

    假如我访问的是 127.0.0.1:10012?a=1,server的socket怎么接收到这个参数呢?

    postman访问服务端打印的数据

    GET /?a=1 HTTP/1.1
    User-Agent: PostmanRuntime/7.24.1
    Accept: */*
    Cache-Control: no-cache
    Postman-Token: 8cd656c8-5e2b-47e8-bac7-7d551fd20e48
    Host: 127.0.0.1:10012
    Accept-Encoding: gzip, deflate, br
    Connection: keep-alive

    浏览器访问服务端打印的数据

    GET /?a=1 HTTP/1.1
    Host: 127.0.0.1:10012
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
    Sec-Fetch-Mode: navigate
    Sec-Fetch-User: ?1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Sec-Fetch-Site: none
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9

    服务器获取到查询参数

    # TODO

  • 相关阅读:
    [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例
    玩转Asp.net MVC 的八个扩展点
    float实例讲解
    C#高性能TCP服务的多种实现方式
    如何把SQLServer数据库从高版本降级到低版本?
    ASP.NET MVC Area使用-将Area设置成独立项目
    如何使用ping和tracert命令测试网站访问速度
    ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
    MVC Action Filter
    c#中单元测试
  • 原文地址:https://www.cnblogs.com/meloncodezhang/p/12795780.html
Copyright © 2011-2022 走看看