发送图像ObjectOutputStream

时间:2011-12-05 22:04:12

标签: java image objectoutputstream

我遇到了一些我无法想出一个血统解决方案的东西。我从服务器发送一些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); 

1 个答案:

答案 0 :(得分:1)

您应该使用缓冲输入输出流而不是对象。因为对象流旨在用于java对象的序列化和反序列化。