首页 > 解决方案 > 重置 OutputStream 以便更新的变量发送

问题描述

通过本地连接发送对象时遇到了一个问题。该对象将按预期第一次发送。然而,对象的变量不断变化,因此在发送到另一个连接时需要更新。这是通过发送消息来提示其他客户端侦听并等待正在发送的对象来完成的。

我知道 java.io.ObjectOutputStream.reset() 方法存在,但不断收到以下错误:

error: cannot find symbol
         output.reset();

以下是代码当前的结构(减去许多不相关的代码):

import java.net.*;
import java.util.*
import java.io.*;

public class Client
{
    private static Socket cSocket = null;        
    private static ObjectOutput output = null;

    private static Person myPerson = null;

    private static String serverHost = "localhost";

    public void Run()
    { 
         // Declaring the output
         output = new ObjectOutputStream(
            cSocket.getOutputStream()
         );

    }

    private static void sendPerson() 
    {
       try 
       {
          output.writeObject( myPerson ); 
          output.reset();
       } catch (Exception e) 
       {
      
       }
    }
}

TLDR:每次调用 sendPerson() 时,其他客户端都会收到发送给其他客户端的第一个对象,而不是更新的变量。尝试使用 reset(); 但抛出错误。

只想发送对象更新的变量,而不是始终发送初始对象。

标签: java

解决方案


要使用ObjectOutputStream#reset,您必须使用这种类型定义您的字段。

不是ObjectOutput,但是ObjectOutputStream

像这样:

private static ObjectOutputStream output = null;

推荐阅读