私は何かに出くわします。私はいくつかの文字列[]メッセージをサーバーからクライアントに送信しますが、今でも画像を送信したいと思います。問題は、クライアント部分のオブジェクトをチェックすることで、byte []ではなく、画像が到着したときに問題を処理することができます。イメージを送信中ObjectOutputStream
今、私は私の着信文字列[]のためにこれを使用します。
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(); }
}
}
しかし、今私は、この流れは[]の両方の文字列を扱うことができるようにしたいと[]バイト、何かアドバイスはイムが失われた、素晴らしいことです:(
私はこのような何かしたいと思う:
if (o instanceof byte[])
{
// ...
}
をしかし、それは、O = input.readObject(以降は問題does notの)イメージファイルが来るとき私にこれを与える:
12月5日23:00:20.255:/をSystem.err(16157)W: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);
バイトを書き込むために何を使用しますか。 writeObject(バイト)を使用し、write(バイト)は使用しないでください。 –
私はwriteObjectを使用します。 –
以下は私の箱で動作します:http://pastebin.com/xP2T0Ux2。あなたがデータを書く方法に何か間違っている必要があります。問題を再現するSSCCEを投稿してください。 –