JAVA ObjectInputStream,读取不存在类的对象

JAVA ObjectInputStream,读取不存在类的对象,java,serialization,Java,Serialization,我正在开发一个应用程序,它使用一个中央服务器向所有客户机广播对象。基本上,客户机服务器使用ObjectOutputStream向中央服务器发送对象。此对象在中央服务器上读取并发送给所有其他客户端,这些客户端使用ObjectInputStream读取对象 所有客户机的代码中都包含实际的对象类。但是中央服务器没有。我想知道我的中央服务器是否能够将数据包“重新定向”到客户端服务器 所有对象都扩展了初始类“Packet”,包括中央服务器在内的所有客户端都包含基本对象。此类包含一个简单的字符串数组,其中包

我正在开发一个应用程序,它使用一个中央服务器向所有客户机广播对象。基本上,客户机服务器使用
ObjectOutputStream
向中央服务器发送对象。此对象在中央服务器上读取并发送给所有其他客户端,这些客户端使用
ObjectInputStream
读取对象

所有客户机的代码中都包含实际的对象类。但是中央服务器没有。我想知道我的中央服务器是否能够将数据包“重新定向”到客户端服务器

所有对象都扩展了初始类“Packet”,包括中央服务器在内的所有客户端都包含基本对象。此类包含一个简单的字符串数组,其中包含将接收数据包的客户端。这就是让人困惑的地方——我不确定在不使用ObjectInputStream获取客户机数组字段的情况下如何读取数据包

如果没有,我可以使用JSON或标准流


Java序列化的所有参与者必须在其类路径上提供所有必需的类,RMI codebase功能除外。

中央服务器是否需要“理解”对象,还是只将数据视为字节?Joni我考虑过将其作为字节读取,但它仍然需要它来共享数据包的一小部分——接收客户端名称。我忘了在第一个问题上加上这个。你可以用很多方法来处理这个问题。HTTP、JSON、原始字节等。。。无论如何,我强烈建议不要使用对象流。您的目标是通知客户端服务器已从另一个客户端接收数据。无需发送整个对象,其中可能包含元数据,具体取决于反序列化的方式。至少据我所知。如果我错了,请纠正我。正如@Joni所提到的:如果服务器不处理这些对象,并且只作为路由器工作,那么将接收到的对象作为简单字节读取。客户端仍然可以将它们作为
ObjectInputStream
来读取和解释。文斯,我想你是对的。使用“原始”数据的唯一问题是强制为发送的变量将分配给的所有对象创建标识符。但我想是时候停止懒惰,开始使用更高效的代码了。