我遇到了一些我无法想出下降解决方案的东西。我从服务器向客户端发送了一些字符串 [] 消息,但现在我也想发送图像。问题是我检查客户端部分的对象,而不是字节 [],这给我处理图像时遇到的问题。
现在我将它用于传入的字符串 []:
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);