gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:23:08 25 4
gpt4 key购买 nike

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

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

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

谢谢

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

最佳答案

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com