【问题标题】:Sending object over socket - object contains bufferedimage- Any ideas?通过套接字发送对象-对象包含缓冲图像-有什么想法吗?
【发布时间】:2018-11-18 02:05:43
【问题描述】:

我正在通过套接字发送一个对象,一个以下类的对象:

public class ClientDetail implements Serializable{
public String username;
public String [] capturedText;
public String site;
public BufferedImage screenShot; 
 }

我正在尝试使用以下方式发送它:

        ClientDetail cD = new ClientDetail();
        cD.capturedText = mon.getCapturedText();
        cD.username = username;
        cD.site = mon.getWebsite();
        ScreenShot ss = new ScreenShot();
        cD.screenShot = ss.getScreenShot();

        if(mon.isCaptured)
        {
            try{
                output.writeObject(cD);
                output.flush(); 
            }catch(IOException ex){
                System.out.println("\nSomething messed up sending the message!");
            }
        }

发送失败。您可以通过套接字发送包含图像的对象吗?

【问题讨论】:

  • 您收到了什么错误信息? / 有什么例外?如果你只是吞下ex,那你不知道哪里出了问题也就不足为奇了。
  • ava.io.NotSerializableException:java.io.ObjectOutputStream.writeObject0(未知源)处的 java.awt.image.BufferedImage 处 java.io.ObjectOutputStream.defaultWriteFields(未知源)处。 ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at client.Client.whileConnected( Client.java:76) 在 client.Client.startRunning(Client.java:31) 在 client.ClientMain.main(ClientMain.java:8)
  • 我知道它与缓冲图像有关,因为您使用不同的方法在套接字上写入图像。 (我是一个新手顺便说一句..去轻松哈哈)
  • 因为缓冲图像不可序列化,我可能只需要单独发送它......或者你知道一种使它可序列化的方法吗?
  • 使用this answer中所示的方法将BufferedImage写入ByteArrayOutputStream,从ClientDetail中删除BufferedImage并添加字节数组。字节数组是可序列化的。

标签: java sockets bufferedimage


【解决方案1】:

发送东西:

ImageIO.write((RenderedImage) image, "png", output);

你知道的接收者:

ImageIO.read(input);

【讨论】:

  • add more detail 解释更多关于这如何完成 OP 的要求,以便 OP 了解原因这将有所帮助
猜你喜欢
  • 1970-01-01
  • 2017-03-18
  • 2012-03-13
  • 2019-04-21
  • 2014-01-11
  • 2022-01-15
  • 2021-01-11
  • 2014-11-13
相关资源
最近更新 更多