我需要序列化
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然后反序列化或只是一个字符串?
答案 0 :(得分:3)
您无需检查。您编写了一个序列化对象:它是一个序列化对象。请使用ObjectInputStream.readObject()
阅读。
您可以使用instanceof
检查序列化对象的类型。
你不需要那里的ByteArrayOutputStream。只需构建new ObjectOutputStream(socket.getOutputStream())
并直接执行writeObject()
即可。你只是在浪费时间,空间和金钱。