【发布时间】:2021-08-15 14:53:43
【问题描述】:
我使用覆盆子作为客户端,我正在向远程 linux 服务器发送一个大数组,问题是当我尝试发送一条小消息时,消息被发送,但是当我发送数组时一个 65xxx 字节的长度,服务器什么也没收到。顺便说一下,数组是腌制的。
server.py:
try:
# Receive our "header" containing message length, it's size is defined and constant
message_header = client_socket.recv(HEADER_LENGTH)
# If we received no data, client gracefully closed a connection, for example using socket.close() or socket.shutdown(socket.SHUT_RDWR)
if not len(message_header):
return False
# Convert header to int value
message_length = int(message_header.decode('utf-8').strip())
fragments = []
print(message_length)
received_len = 0
while received_len < message_length:
chunk = client_socket.recv(message_length - received_len)
if not chunk:
break
fragments.append(chunk)
received_len += len(chunk)
data_arr = b"".join(fragments)
# Return an object of message header and message data
return {'header': message_header, 'data': data_arr}
except:
return False
client.py:
message = pickle.dumps(faceBlob)
message_header = bytes(f"{len(message):<{HEADER_LENGTH}}", "utf-8")
client_socket.send(message_header + message)
【问题讨论】:
-
我尝试了 sendall 但它不起作用
-
这个词是“长度”。请正确拼写。