我正在尝试使用Python创建一个简单的图像共享应用程序,以便可以将图像从客户端共享到服务器。我正在使用套接字并以numpy数组的形式发送图像。我的问题是,在加载应用程序时,我做出了这样的决定:将6张或更少的图像(如果少于6张)从服务器发送到客户端。每个图像都以唯一的名称存储在服务器中。此名称的长度可变,由用户决定,并在发送图像数组之前发送。同样,发送图像的形状以从客户端的字节中复制图像。但是由于名称长度不是固定的,因此我正在读取10个缓冲区大小。但是,如果名称较小,那么它也在读取我稍后发送的邮件的形状。我该如何解决?这是发送图像的代码:
def send_multiple_imgs(send_socket, imgs):
num = len(imgs)
send_socket.send(str(num).encode())
for img in imgs:
print(img)
send_socket.send(img.encode())
send_img(send_socket,imgs[img])
send_img函数的一部分:
def send_img(send_socket,img):
send_socket.send(str(img.shape).encode())
.....
我认为后面的部分并不重要。 这是接收部分:
def receive_multiple_img(recv_socket):
num = int(recv_socket.recv(1).decode())
imgs = {}
for i in range(num):
img_name = recv_socket.recv(10).decode()
print(img_name)
imgs[img_name] = recieve_image(recv_socket)
return imgs
正在发生的事情是,我有一个名为“ ds”的图像,形状为(200,200,4),但是img_name读为: 'ds(200,20',然后也将进一步的发送和接收弄乱了。如何解决此问题?我正在使用TCP协议:
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
我是python网络新手。所以,请考虑这是否是一个愚蠢的问题