通过套接字传输不同的对象

时间:2017-01-20 14:28:53

标签: java sockets

我试图找到这个问题的解决方案,但我认为这是我问你的最后一个选择。 所以我想通过套接字流发送两个数组列表:

objects= new ArrayList<GObject>();
registry = new ArrayList<Registry>();

我正在使用它:

发送:

outToClient.reset();//outtoclient is an objectoutput stream
outToClient.writeObject(registry);
outToClient.reset();
outToClient.writeObject(objects);

接收:

registry2=(ArrayList<Registry>) inFromServer.readObject();
objects2=(ArrayList<GObject>) inFromServer.readObject();

随着注册表顺利进入“另一方”,对象不是。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你可以在程序中使用一些技巧,我会给你一个:

考虑我将发送和Object X,在我发送之前,我将发送任何类型的标志,例如String,以通知我的目的地我将向您发送Object X,所以目标存储此标志,当我发送我的对象时,它会将其转换为正确的对象。

  

服务器:发送flag

     

客户:接收flag并存储

     

服务器:发送Object X

     

客户:接收Object X

     

客户:将Object X投射为与您的国旗相同

例如:

if(flag.equals("t1")){
   registry2=(ArrayList<Registry>) inFromServer.readObject();
}else if(flag.equals("t2")){
   objects2=(ArrayList<GObject>) inFromServer.readObject();
}else{
  //...
}

现在您有了一个想法,如何做到这一点,您只需要用自己的信息来实现它。