如何通过python请求连接发送原始数据

如何通过python请求连接发送原始数据,python,python-requests,Python,Python Requests,我正在与一个服务器进行接口,该服务器在开始时需要一些http通信(与GET/POST握手),但后来通过tcp切换到原始数据包。原始数据包使用上一个“GET”数据包与“connection:keep alive”头建立的连接进行发送和接收。 我已经设法使用response.raw.\u fp.read()和stream=True读取传入数据,但我找不到将数据发送回服务器的方法 对于原始数据包,我指的是testream,没有任何方法/url或头 resp = session.get( 'ht

我正在与一个服务器进行接口,该服务器在开始时需要一些http通信(与GET/POST握手),但后来通过tcp切换到原始数据包。原始数据包使用上一个“GET”数据包与“connection:keep alive”头建立的连接进行发送和接收。 我已经设法使用response.raw.\u fp.read()和stream=True读取传入数据,但我找不到将数据发送回服务器的方法

对于原始数据包,我指的是testream,没有任何方法/url或头

resp = session.get(
    'http://server.server/test',
    stream=True
)

while True:
    try:
        header = resp.raw._fp._safe_read(8)
        if header[3]>0:
            data = resp.raw._fp._safe_read(header[3])
    except http.client.IncompleteRead:
        break

您想要做的是从请求创建的连接中获取底层套接字,幸运的是,您可以为流式连接这样做

import requests
import socket
r = requests.get('http://server.server/test', stream=True)
s = socket.fromfd(r.raw.fileno(), socket.AF_INET, socket.SOCK_STREAM)

之后,您可以像使用任何其他套接字一样发送数据。旁注:对于非流连接,在返回响应对象之前,文件描述符将被清除,因此您也可以在“响应”回调中实现此操作。

可能会出现类似websocket的重复声音。