Java - 通过套接字发送指向 BufferedImage 的对象

dhc*_*ona 1 java sockets bufferedimage serializable

我和一群朋友正在做一个 Java 项目,我们需要一些关于通过套接字发送对象的帮助。

到目前为止,我们已经实现了通过套接字发送简单对象(整数、字符串等),使用ObjectOutputStreamObjectInputStream。然而,我们今天遇到了一个大问题(无论如何对我们来说都是巨大的^^)

我们有一个树结构,我们需要将它从一台 PC 发送到另一台 PC。问题是,在该树的每个节点中,我们都有一个对 BufferedImage 的引用,并且它是不可序列化的。

今天研究了很多,发现可以通过socket的OutputStreamImageIO.write()来发送一个BufferedImage,但是这对我们没有好处,因为我们不需要自己发送BufferedImage,但是整棵树都是它地处。

我们需要的是一种方法(如果存在)来序列化每个 BufferedImage,必要时将其转换为另一个类,同时制作树,并使树的每个节点引用新的可序列化类,因此树可以作为整个物体...

我们真的不关心性能,因为我们发送的树并不大(顶部 10-15 个节点)。在此先感谢您的帮助,对于糟糕的英语深表歉意。哦,这是为了......好吧,一种家庭作业,以防你想记住这一点:-)

谢谢!!

rat*_*eak 6

在每个节点上,您可以使用 writeObject() 和 readObject() 检查http://java.sun.com/developer/technicalArticles/Programming/serialization/了解更多信息

本质上它会变成

public Node implements Serializable{

    transient BufferedImage buff;//transient make it so it won't be written with defaultWriteObject (which would error)

    private void writeObject(ObjectOutputStream out)throws IOException{
        out.defaultWriteObject();
        //write buff with imageIO to out
    }

    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
        in.defaultReadObject();
        //read buff with imageIO from in
    }
}
Run Code Online (Sandbox Code Playgroud)