如何使用python套接字通过连接发送api响应?

2024-05-21 08:30:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让服务器等待客户机建立连接,从客户机获取数据,使用该数据发出api请求,并将响应发送给客户机。除了将响应发送回客户机(客户机函数只是超时)之外,其他一切都正常。如果将conn.sendall(“anythinghere”)放在while True循环中,这可以工作,但显然不会返回我需要它返回的内容。将conn.sendall放在循环外部会导致客户端超时

服务器代码

conn, addr = s.accept()

print('Connected by', addr)
fragments = []
while True:
    chunk = conn.recv(4096)
    if not chunk:
        break
    fragments.append(chunk)

action = "".join(fragments)

URL = "http://172.31.55.211/" + action

print("making request")
r = requests.get(url = URL)
data = r.json()

conn.sendall(data['message'])

客户机代码

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print(s)
    s.connect((HOST, PORT))
    s.sendall(b'hellocvs')
    data = s.recv(1024)

    print('Received', repr(data))

    return {
        'statusCode': 200,
        'body': json.dumps(str(data))
    }

Tags: 代码服务器truedata客户机actionsocketconn
1条回答
网友
1楼 · 发布于 2024-05-21 08:30:45

在第action = "".join(fragments)行,服务器代码不会运行,因为fragmentsbytes not string,所以需要b''.join(fragments)来连接字节

相关问题 更多 >