栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python——tcp服务器与http协议

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python——tcp服务器与http协议

1.http协议基于tcp,有连接可靠传输

2.http请求报文:

GET / HTTP/1.1
Host: 192.168.57.131:8800
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

a.Get / HTTP/1.1:第一个/表示浏览器请求什么页面。平时输入www.xxx.com,表示访问一个主页,如果输入www.xxx.com /a/b/c.html.这句就变成Get /a/b/c.html HTTP/1.1

b.Connection:分为长短连接

c.user-agent:客户端浏览器版本

d.accept:表示浏览器可以接受什么格式的数据

e.accept-encoding:如果服务器发送数据较大,采用什么格式压缩数据

3.服务器代码

import socket


def server(t_sock):
    # 循环:为一个客户多次服务
    while True:
        # 从客户端接收http请求
        recv_data = t_sock.recv(1024)
        print(recv_data.decode("gbk"))
        # 给客户端发送http应答,在网页上显示‘你好’
        # http可能面对不同的os,所以约定用rn来表示换行
        # http的header和body区分之处:只要出现第一个空行,二者便区分开
        send_data = "HTTP/1.1 200 OKrnrn你好"
        t_sock.send(send_data.encode("gbk"))


def main():
    # 创建tcp套接字
    tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 设置当服务器先调用close,即服务器四次挥手后能将资源立即释放,这样就保证了下次运行程序时能
    # 立即连接
    tcp_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    # 绑定ip,端口
    tcp_sock.bind(('', 54321))
    # 改为监听套接字
    tcp_sock.listen(128)
    # 循环:可以为多个客户服务
    while True:
        # 使用accept等待客户连接,此时程序阻塞
        # 客户连接后返回两个值,服务套接字和客户端地址
        client_sock, client_add = tcp_sock.accept()
        # 为客户服务,用一个方法来实现,注意参数
        server(client_sock)
        # 关闭服务套接字
        client_sock.close()
    # 关闭监听套接字
    tcp_sock.close()


if __name__ == "__main__":
    main()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461504.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号