如何通过 python 套接字发送 numpy 数组
how to send numpy array over python socket
- 嘿,美好的一天!
- 我实现了一个简单的程序来通过 python 套接字发送一个 numpy 数组
这是server.py
import socket
import numpy as np
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1024))
s.listen(5)
print('Server is ready...')
while True:
client, adr = s.accept()
print(f'Connection to {adr} established')
myarray = np.array([[1,2],[3,4]])
client.send(myarray)
client.close()
这是client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1024))
getarray = s.recv(100)
print(getarray)
我想将 server.py 中的数组发送到 client.py
我想得到 client.py 中的 myarray 与 server.py
中的 myarray 100% 相似
**但是,当我 运行 server.py 和 client.py 时,client.py 的输出是这样的.. **
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00'
- 不知道编码方式是什么(asci或者utf-8解码)
- 如何解码?
谢谢!
您可以使用 pickle 将数组对象编码为字节,然后发送。
虽然根据数组的大小,您可能需要更改接收方式,但 s.recv() 只会获得一定数量的字节,因此您需要先发送数组的字节大小, 然后重复 s.recv 直到得到整个数组。 pickle.dumps(obj)
将 return 对象的字节流,并且 pickle.loads(obj)
将 return 接收到所有原始对象后的原始对象。
希望对您有所帮助:)
- 嘿,美好的一天!
- 我实现了一个简单的程序来通过 python 套接字发送一个 numpy 数组
这是server.py
import socket
import numpy as np
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1024))
s.listen(5)
print('Server is ready...')
while True:
client, adr = s.accept()
print(f'Connection to {adr} established')
myarray = np.array([[1,2],[3,4]])
client.send(myarray)
client.close()
这是client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1024))
getarray = s.recv(100)
print(getarray)
我想将 server.py 中的数组发送到 client.py
我想得到 client.py 中的 myarray 与 server.py
中的 myarray 100% 相似**但是,当我 运行 server.py 和 client.py 时,client.py 的输出是这样的.. **
b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00'
- 不知道编码方式是什么(asci或者utf-8解码)
- 如何解码?
谢谢!
您可以使用 pickle 将数组对象编码为字节,然后发送。
虽然根据数组的大小,您可能需要更改接收方式,但 s.recv() 只会获得一定数量的字节,因此您需要先发送数组的字节大小, 然后重复 s.recv 直到得到整个数组。 pickle.dumps(obj)
将 return 对象的字节流,并且 pickle.loads(obj)
将 return 接收到所有原始对象后的原始对象。
希望对您有所帮助:)