我遇到了一些我无法想出一个血统解决方案的东西。我从服务器发送一些string []消息到客户端,但现在我想发送图像。问题是我检查客户端部分上的对象,而不是字节[],这使我在到达时处理图像时出现问题。
现在我将它用于我的传入字符串[]:
public void run()
{
while(active)
{
try
{
Object o;
o = input.readObject();
System.out.println("Received from server!");
if ( o instanceof String[])
{
String[] names = (String[]) o;
Refresh.getInstance().update( names );
}
}
catch (OptionalDataException e) { e.printStackTrace(); Terminate(); }
catch (ClassNotFoundException e) { e.printStackTrace(); Terminate(); }
catch (IOException e) { e.printStackTrace(); Terminate(); }
}
}
但是现在我希望这个流能够处理String []和bytes [],任何建议都会很棒,我会丢失:(
我想要这样的东西:
if ( o instanceof byte[])
{
// ...
}
但是没关系,因为o = input.readObject()在图像文件出现时给我这个:
12-05 23:00:20.255:W / System.err(16157):java.io.StreamCorruptedException:格式错误:ac
写入字节的代码:
FileInputStream fis = new FileInputStream("images\\test.jpg");
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
ObjectOutputStream oos = new ObjectOutputStream(serverSocket.getOutputStream()) ;
oos.writeObject(buffer);
答案 0 :(得分:1)
您应该使用缓冲输入输出流而不是对象。因为对象流旨在用于java对象的序列化和反序列化。