我试图让服务器等待客户机建立连接,从客户机获取数据,使用该数据发出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))
}
在第
action = "".join(fragments)
行,服务器代码不会运行,因为fragments
是bytes not string
,所以需要b''.join(fragments)
来连接字节相关问题 更多 >
编程相关推荐