【发布时间】:2016-04-02 22:53:35
【问题描述】:
我正在尝试将图像从套接字服务器 (Java) 发送到套接字客户端 (Python),但客户端中接收到的图像大小不正确且无法打开。我不知道我做错了什么。有什么建议吗?
服务器(Java):
...
BufferedImage image = ImageIO.read (new File("c:\\tmp\\File.png"));
ImageIO.write(image, "png", connectionSocket.getOutputStream());
...
客户端(Python):
try:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect( host , port )
data = client_socket.recv( 1024 )
fp = open ( path, "wb" )
while data:
data = client_socket.recv( 1024 )
if data:
if not data: break
fp.write ( data )
fp.flush()
fp.close()
client_socket.close()
except:
print "could not connect to %s:%s " %( host, port
【问题讨论】:
-
使用base64编码传输
-
谢谢你能不能解释一下
-
您必须知道要发送多少数据才能确保收到所有数据。在java中,在传输之前获取你的图像大小(例如称为's'),首先将大小's'发送到python客户端,然后读取's'下一个数据。否则,您可以在传输和读取数据时使用结束分隔符。