gpt4 book ai didi

java - 从套接字服务器发送 2 个图像

转载 作者:行者123 更新时间:2023-11-29 04:46:56 24 4
gpt4 key购买 nike

我想从套接字服务器 (Java) 发送 2 个图像到客户端套接字 (python)。

--> 我的问题是我在客户端只收到一个图像 (dataImage1)。

我做错了什么?

我连续发送(java)图像:

 ...
BufferedImage image = ImageIO.read (file);
imgstr = encodeToString(image, "png");
outToClient.writeBytes(imgstr);
...
BufferedImage chart = ImageIO.read (fileChart);
imgstrChart = encodeToString(chart, "png");
outToClient.writeBytes(imgstrChart);
...

我连续收到(python)图像:

  ...
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_addr = (tcpclient.host , tcpclient.port)
client_socket.connect( server_addr )
dataImage1 = client_socket.recv( 1024 )
fp = open ( pathImage1, "wb" )
while dataImage1:
#{
if not dataImage1: break
recvDataImage += dataImage1
dataImage1 = client_socket.recv( 1024 )
#}
fp.write(b64decode( recvDataImage1 ))
fp.flush()
fp.close()

dataImage2 = client_socket.recv( 1024 )
fp = open ( pathImage2, "wb" )
while dataImage2:
#{
if not dataImage2: break
recvDataImage2 += dataImage2
dataImage2 = client_socket.recv( 1024 )
#}
fp.write(b64decode( recvDataImage2 ))
fp.flush()
fp.close()
....

最佳答案

接收者如何知道 image1 在哪里结束?在您的代码中,客户端不断调用 client_socket.recv 直到返回空字符串。在套接字关闭之前不会发生这种情况。所以发生的事情是您正在传输两个图像,而客户端正在将两个图像的内容写入第一个文件。

第二个循环将永远不会收到任何数据,因为一旦关闭,您将永远不会从套接字收到更多数据。

您需要 (a) 打开一个新的套接字来传输第二个文件,或者 (b) 发送每个文件的长度作为协议(protocol)的一部分,以便客户端知道要写入多少 pathImage1 在移动到 pathImage2 之前。

关于java - 从套接字服务器发送 2 个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765331/

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