如何检查来自服务器的数据是序列化数组还是只是一个简单的字符串?

时间:2012-03-29 23:58:02

标签: java

我需要序列化

ArrayList<String> arr=new ArrayList<String>();

在服务器上,然后将此数组发送到客户端。

我将其序列化并写入socket.getOutputStream()

  ByteArrayOutputStream bos=new ByteArrayOutputStream();
  try{
      ObjectOutputStream oos=new ObjectOutputStream(bos);
      oos.writeObject(arr);
      oos.close();
      socket.getOutputStream().write(bos.toByteArray());
  }catch(IOException exc)
  {
      System.out.println("Series erro!");
  }

客户端从服务器接收字节

        byte[] buf=new byte[1024*100];
        //данные приходные
        int r=s.getInputStream().read(buf);

如何检查它是否是我的ArrayList然后反序列化或只是一个字符串?

1 个答案:

答案 0 :(得分:3)

您无需检查。您编写了一个序列化对象:它是一个序列化对象。请使用ObjectInputStream.readObject()阅读。

您可以使用instanceof检查序列化对象的类型

你不需要那里的ByteArrayOutputStream。只需构建new ObjectOutputStream(socket.getOutputStream())并直接执行writeObject()即可。你只是在浪费时间,空间和金钱。