gpt4 book ai didi

python - 如何在python3x的套接字上正确发送字典的内容?

转载 作者:行者123 更新时间:2023-12-03 20:27:47 24 4
gpt4 key购买 nike

python3.x中使用套接字,我想通过套接字发送字典的内容,由于某些原因,此行上方的链接无法回答该问题……

client.py:

a = {'test':1, 'dict':{1:2, 3:4}, 'list': [42, 16]}
bytes = foo(a)
sock.sendall(bytes)

server.py:
bytes = sock.recv()
a = bar(bytes)
print(a)

如何将任何字典转换为字节序列(能够通过套接字发送)以及如何转换回?我更喜欢一种干净而简单的方法来做到这一点。

到目前为止我尝试过的是:
sock.sendall(json.dumps(data))
TypeError: 'str' does not support the buffer interface

sock.sendall(bytes(data, 'UTF-8'))
TypeError: encoding or errors without a string argument

data = sock.recv(100)
a= data.decode('UTF-8')
AttributeError: 'str' object has no attribute 'decode'

最佳答案

这主要是概述注释,但是您需要将dict转换为json str对象,通过对str对象进行编码将其转换为bytes对象,然后将其通过套接字发送。在服务器端,您需要将通过套接字发送的bytes对象解码回str,然后使用json.loads将其转换回dict

客户:

b = json.dumps(a).encode('utf-8')
s.sendall(b)

服务器:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('localhost', 1234))
s.listen(1)
conn, addr = s.accept()
b = b''
while 1:
tmp = conn.recv(1024)
b += tmp
d = json.loads(b.decode('utf-8'))
print(d)

关于python - 如何在python3x的套接字上正确发送字典的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23876608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com