C/C++教程

socket模块

本文主要是介绍socket模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

socket模块

HTTP协议
    1.四大特性
        1.基于请求响应
        2.基于TCP/IP作用于应用层之上的协议(OSI七层)
        3.无状态
        4.无连接/短连接
            长链接 websocket
    2.数据格式
        请求格式
            请求头(请求方法)
            请求首行(一大堆kv键值对)
            
            请求体(并不是所有的请求都有 携带一些敏感数据)
        响应格式
    3.响应状态码
        用数字来表示一堆中文意思
        1XX
        2XX  200
        3XX  302 304
        4XX  403 404
        5XX  500
        在公司中还会自定义更多的状态码
            一般都是以10000起步
      

服务端

import socket

"""
1.必须要有固定的IP和PORT
2.必须能够24小时不间断提供服务
3.能够支持高并发
"""
# 1.创建socket对象
server = socket.socket()
# 2.绑定IP和PORT
server.bind(('127.0.0.1', 8080))
# 3.监听
server.listen(5)

# 链接循环
while True:
    conn, addr = server.accept()
    # 接收客户端数据
    data = conn.recv(1024)
    # 将data转换成字符串
    # 回复HTTP响应格式
    conn.send(b'HTTP/1.1 200 OK\r\n\r\n')

    new_data = data.decode('utf8')
    res = new_data.split(' ')[1]
    if res == '/index':
        conn.send(b'index')
    # 回复客户端消息
    conn.send(b'how are you?')

"""
b'GET / HTTP/1.1\r\n  请求头
Host: 127.0.0.1:8080\r\n  一堆KV键值对
Connection: keep-alive\r\n
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"\r\n
sec-ch-ua-mobile: ?0\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36\r\n
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\r\n
Sec-Fetch-Site: none\r\n
Sec-Fetch-Mode: navigate\r\n
Sec-Fetch-User: ?1\r\n
Sec-Fetch-Dest: document\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: csrftoken=8EqjbfAEKVeFfdsCzPdBjHHotyBJfuagqFy3rtUjhmXCBArcEB1e3E0MaX1sdFA0\r\n
\r\n'  换行
GET请求没有请求体
"""

客户端

import socket


client = socket.socket()
client.connect(('127.0.0.1',8080))

while True:
    client.send(b'who you are?')
    res = client.recv(1024)
    print(res)

 

这篇关于socket模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!