java - 套接字编程序列化对象

标签 java sockets serialization

我的代码中有一个非常奇怪的情况,我不明白我正在发送一个对象让我们通过套接字说 O 然后我正在更改对象中变量的值并再次发送它但是第二次我在客户端打印它,我得到与第一个对象相同的值。

客户端代码:

 while(true){
             try{
             order=(Order)ois.readObject();

            System.out.println(order);

             }

服务器代码:

public void sendOrder(Order o){
    try {
        out.writeObject(o);

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

主要方法:

Server_Socket ss=new Server_Socket();
    ss.sendOrder(o);
    o.add(r2);
    ss.sendOrder(o);

在我发送之前,服务器端的值肯定会发生变化,但我不明白为什么在客户端它没有显示对象中添加了 r2。

最佳答案

ObjectOutputStream 正在缓存对象。为防止出现这种情况,请在每次写入后调用 ObjectOutputStream.reset()。如果您要发送不包含其他对象的简单对象,请使用 writeUnshared() 而不是 writeObject()

关于java - 套接字编程序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593310/

相关文章:

python - 在 Linux 上增加 tcp 接收窗口

python - 序列化 Django 模型对象 : Referencing to self

java - 反序列化后锁的状态是什么

c# - 在 EF 模型的 JSON 序列化期间向嵌套对象添加属性

Java地址簿字符串读取

java - spotify web api授权代码授予thelinmichael/spotify-web-api-java android

Java - 检查 jsp 页面上的 Cookie

java - 覆盖扩展接口(interface)中的返回类型 - 坏主意?

Python TCP 几个同时监听多个端口

iPhone 数据使用跟踪/监控