【问题标题】:sending Image from Socket server (java) to socket client (python)将图像从套接字服务器(java)发送到套接字客户端(python)
【发布时间】: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'下一个数据。否则,您可以在传输和读取数据时使用结束分隔符。

标签: java python sockets


【解决方案1】:

将您的图像转换为 base64 字符串 (Java),然后传输该字符串并返回图像数据 (python)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2019-08-08
    • 2016-07-17
    • 1970-01-01
    • 2014-11-05
    • 2020-06-01
    • 2013-04-01
    相关资源
    最近更新 更多