【发布时间】:2010-05-29 14:12:51
【问题描述】:
我正在用 Java 编写一个程序,其中两台或多台机器之间使用 UDP 进行通信。我的应用程序通过网络将对象序列化后将对象发送到另一台机器,在该机器上将对其进行反序列化和处理。到目前为止,我成功发送了一种对象。
我的问题是我希望发送者能够发送不同类型的对象,并且接收者能够接收它们并将它们再次转换为适当的类型。但是,由于 UDP 分配一个字节缓冲区,然后将数据接收到缓冲区中,因此无法转换或检测接收到的对象的类型,因为不同的对象具有不同的大小。
有没有一种方法可以让我使用 UDP 发送不同类型的对象,然后在另一端接收它们? (这里不求代码,只是一些想法)
谢谢
编辑: 我正在寻找发送/接收不同对象类型的最佳方法,而不知道下一个预期对象的类型。假设我有三种对象类型,我希望在任何时间都能收到其中任何一种。 在 Brian 发表评论后,我想到的另一件事是:如何为可变大小的数据类型(如字符串、数组等)设置缓冲区大小。与接收 UDP 数据包时一样,您必须首先分配一个大小以接收该对象的缓冲区。这在某种程度上与我原来的问题有关。
【问题讨论】:
-
发布一些代码会很有用。对象的内容可能会在大小上有所不同,而不是因为它们的类型。
-
会不会是你没有使用内置java序列化?在这种情况下:只需从内容中发送类名,以便接收者处理它。
-
@Brian:是的,但如果我在对象中只使用原始数据类型,那么这不是一个真正的问题。 @Daniel:不,我在这里使用内置的。
标签: java object udp serialization