私は、降下の解決策を思いつくことができないものに出くわしました。サーバーからクライアントにいくつかの 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);