我遇到了一些我想不出下降解决方案的问题。我从服务器向客户端发送了一些string[]消息,但现在我还想发送图像。问题是我在客户端检查对象,而不是byte[],这给我在图像到达时处理图像带来了问题。
现在,我对传入的strings[]使用以下代码:
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); 发布于 2011-12-06 06:34:13
你应该使用缓冲的输入输出流而不是object。As对象流旨在与java对象的序列化和反序列化一起工作。
https://stackoverflow.com/questions/8392530
复制相似问题