如何通过 python 套接字发送 numpy 数组

how to send numpy array over python socket

这是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)

b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00'

谢谢!

您可以使用 pickle 将数组对象编码为字节,然后发送。 虽然根据数组的大小,您可能需要更改接收方式,但 s.recv() 只会获得一定数量的字节,因此您需要先发送数组的字节大小, 然后重复 s.recv 直到得到整个数组。 pickle.dumps(obj) 将 return 对象的字节流,并且 pickle.loads(obj) 将 return 接收到所有原始对象后的原始对象。

希望对您有所帮助:)