java - 使用java通过UDP发送/接收不同的对象

标签 java object udp serialization

我正在用Java编写一个程序,其中两台或多台机器之间使用UDP进行通信。我的应用程序将对象序列化后通过网络发送到另一台机器,在那里它将被反序列化并处理。到目前为止我已经成功发送了一种对象。

我的问题是我希望发送者能够发送不同类型的对象,并且接收者能够接收它们并将它们再次转换为适当的类型。然而,由于UDP分配一个字节缓冲区然后将数据接收到缓冲区中,因此无法强制转换或检测接收到的对象的类型,因为不同的对象具有不同的大小。

有没有一种方法可以让我使用 UDP 发送不同类型的对象,然后在另一端接收它们? (我在这里不要求代码,只是一些想法)

谢谢

编辑: 我正在寻找发送/接收不同对象类型的最佳方法,而不知道下一个预期对象的类型是什么。假设我有三种对象类型,我希望在任何给定时间收到其中任何一种。 在 Brian 发表评论后,我想到的另一件事是:如何为可变大小的数据类型(如字符串、数组等)设置缓冲区大小。当接收 UDP 数据包时,您必须首先分配一个大小的缓冲区来接收该对象。这在某种程度上与我原来的问题有关。

最佳答案

您序列化的内容(使用 ObjectOutputStream)也可以反序列化(使用 ObjectInputStream)。然后你检索一个对象。如果您通过 UDP、TCP、管道、本地文件或其他方式传输它,它就不起作用。序列化写入OutputStream,反序列化从InputStream读取。

您使用 myObject.getClass() 来检测您收到的内容。

关于java - 使用java通过UDP发送/接收不同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935377/

相关文章:

c++ - boost asio udp 套接字连接 (IPv6) 上的参数无效

java - 是否可以从静态方法中获取类名?

java - 制作具有主动渲染功能的屏幕管理器类

javascript - 使用 Javascript 从字符串到对象

javascript - 检索 JS 对象中每个键的值并将每个键的每组值推送到它自己的数组

java - Apache MINA 服务器在 60 秒后关闭 Activity UDP "session"

java - 当映射包含 DTO 列表的对象成功时,为什么映射 DTO 列表会失败?

java - 使用内连接时映射 NativeQuery 结果

c++ - 卡在访问方法 C++

android - 如何首先将数据包从一部安卓手机发送到wifi路由器,然后再从路由器发送到另一部安卓手机??