2016-03-31 37 views
2

我想从套接字服务器(Java)发送图像到套接字客户端(Python),但客户端中接收到的图像的大小不正确并且未打开。我不知道我做错了什么。有什么建议么?将图像从套接字服务器(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 
+0

使用base64编码到transfert – Tokazio

+0

谢谢能否请您进一步解释 – ezzitt

+0

你必须知道你会送多少数据,以确保接收所有的他们。在java中,在转移之前获取图像大小(例如,称为's'),首先将大小''发送给python客户端,然后读取's'下一个数据。否则,您可以在获取它时使用结束分隔符来传输和读取数据。 – Tokazio

回答

1

转换图像到Base64字符串(JAVA),然后transfert字符串并取回的图像数据(蟒蛇)。

在java中,从BASE64字符串获取图片:

public static Image image(String base64Img) { 
byte[] b = DatatypeConverter.parseBase64Binary(base64Img); 
ByteArrayInputStream s = new ByteArrayInputStream(b); 
return new Image(s); 
} 
相关问题