java - 重置 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(); 但抛出错误。
只想发送对象更新的变量,而不是始终发送初始对象。
解决方案
要使用ObjectOutputStream#reset
,您必须使用这种类型定义您的字段。
不是ObjectOutput
,但是ObjectOutputStream
。
像这样:
private static ObjectOutputStream output = null;
推荐阅读
- java - 当我的 textInputLayout 为空时如何出错
- amazon-web-services - 在已创建的资源上部署 lambda 函数
- c# - Xamarin.Form 中用于保存数据的 iOS 路径
- sharepoint - SharePoint 库中的奇怪行为设置为需要内容批准
- laravel - 如何修复生产服务器上的 json_unquote 不存在错误?
- php - 尝试在 if 条件下显示背景颜色
- reactjs - 如何使用 react 和 materialUI 控制来自另一个模块的对话框
- javascript - 为什么 WordPress 会阻止 JavaScript
- javascript - Formspree 400 BAD REQUEST 表单提交
- authentication - 使用 Blazor 服务器和 Azure AD 身份验证获取身份验证令牌