如何通过Python Requests连接发送原始数据

3
我正在与一台服务器进行接口交互,需要在开始时进行一些http通信(通过GET/POST握手),但后来会切换到基于tcp的原始数据包。使用上一个带有“connection: keep-alive”标头的“GET”数据包建立连接,并用它发送和接收原始数据包。我已经成功使用response.raw._fp.read()和stream=True读取传入的数据,但是我找不到发送数据回服务器的方法。
所谓的原始数据包是指字节流,没有任何方法/ 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

可能是 在Python请求中发送原始数据 的重复问题。 - user9455968
听起来像是一个WebSocket。 - Klaus D.
1个回答

0
你想要做的是从请求创建的连接中获取底层套接字,幸运的是,对于流连接,你可以这样做。
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)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接