【发布时间】: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