ObjectInput-和OutputStream:第二次发送更改的对象

时间:2013-10-26 12:39:21

标签: java sockets objectinputstream objectoutputstream

我正在编写客户端 - 服务器应用程序,我需要有时向客户端发送一个对象。 所以我尝试了这个:

服务器端:

    ss = new ServerSocket(port);
    s = ss.accept();

    ize = new HashMap<>();
    oos = new ObjectOutputStream(s.getOutputStream());
    ize.put("ize", new TileSprite(1, 2, 3, 4, "tile"));
    oos.writeObject(ize);
    System.out.println(ize.get("ize").getX());

    //oos = new ObjectOutputStream(s.getOutputStream());
    ize.get("ize").setX(2);
    oos.writeObject(ize);
    System.out.println(ize.get("ize").getX());

客户方:

    s = new Socket("localhost", 12345);
    ois = new ObjectInputStream(s.getInputStream());

    ize = (HashMap<String, GeneralSprite>) ois.readObject();
    System.out.println(ize.get("ize").getX());

    //ois = new ObjectInputStream(s.getInputStream());
    ize = (HashMap<String, GeneralSprite>) ois.readObject();
    System.out.println(ize.get("ize").getX());

除非我从2重新初始化中删除评论,否则我永远无法获得正确的值。我尝试了一些方法,但结果几乎总是一样的:有时我得到一些错误,或者只是x的相同旧值(第二次是1而不是2)。

我不认为重新初始化是正确的方法,所以我尝试了ObjectOutputStream.reset()方法,但它也没有用。

0 个答案:

没有答案