2011-10-02 138 views
0

我正在实现这个example,因为我想向多个客户端广播。在尝试使用套接字发送另一个对象(已被序列化)时,我收到一个错误,说明套接字(在本例中)无法通过它发送对象。数据报套接字不能发送/接收对象吗?通过数据报套接字发送一个对象java

+0

向我们展示你的代码,并告诉我们你得到确切的错误信息。 –

+0

数据报不是最好的发送对象,因为你不能保证所有的数据包都会到达。 –

+1

一些有用的链接:[Java Tip 40:通过数据报数据包进行对象传输](http://www.javaworld.com/javaworld/javatips/jw-javatip40.html)和[在java中使用UDP发送和接收序列化对象]( http://stackoverflow.com/questions/3997459/send-and-receive-serialize-object-on-udp-in-java) –

回答

4

不一般,没有。数据报数据包一般都是比较小的 - 你可以尝试序列化你的对象为ByteArrayOutputStream包裹在ObjectOutputStream,然后尝试字节数组事后送 - 但你可能会发现它变得太大的非常快。

使用更高效的序列化格式,如Protocol Buffers很可能让你得到单个数据包中的详细信息,但通常你会想序列化到一个,而不是一个单一 ...只要你开始尝试将基于数据流的协议放在基于数据报的协议上 - 那么只要它必须可靠,你就会很快地结束TCP。

如果你可以给我们你想要做什么(包括可靠性约束? - 如何严重的是,如果一个数据包丢失)的详细信息,我们也许能够帮助你。

1

您最好的选择是要么使用TCP或其他库如jGroups

的JGroups是可靠组播通信的工具包。