【发布时间】:2020-07-15 07:35:57
【问题描述】:
我想通过套接字发送/接收数据。
我因为 ROS(melodic) 而使用 python 2.7,也因为 tensorflow 而使用 python 3.6。
dict 数据,例如{'key_name':[[1,2,3],[4,5,6]]},使用JSONEncoder.encoder() 发送和编码。
客户端收到loads()的json数据并重新发送给服务器。
客户端使用python 2.7,服务端使用python 3.6
def _send(socket, send_data):
json_data = json.JSONEncoder().encode(send_data)
socket.sendall(json_data)
def _recv(socket):
recv_data = socket.recv(BUFSIZE)
json_data = json.loads(recv_data, encoding="utf-8")
return json_data
我有错误
File "/usr/lib/python3.6/json/deoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 4097 (char 4096)
我需要一个可在 python 2.7 和 3.6 上运行的 python 代码。
【问题讨论】:
-
你怎么知道响应只有4096字节?
-
这个答案stackoverflow.com/questions/61006696/… 似乎证实了@user207421 的建议。你应该检查你的 json 输出,并确保你没有因为 BUFSIZE 太小而切断任何数据。
标签: python json python-2.7 sockets