通过数据报套接字发送一个对象java
问题描述:
我正在实现这个example,因为我想向多个客户端广播。在尝试使用套接字发送另一个对象(已被序列化)时,我收到一个错误,说明套接字(在本例中)无法通过它发送对象。数据报套接字不能发送/接收对象吗?通过数据报套接字发送一个对象java
答
不一般,没有。数据报数据包一般都是比较小的 - 你可以尝试序列化你的对象为ByteArrayOutputStream
包裹在ObjectOutputStream
,然后尝试字节数组事后送 - 但你可能会发现它变得太大的非常快。
使用更高效的序列化格式,如Protocol Buffers很可能让你得到单个数据包中的详细信息,但通常你会想序列化到一个流,而不是一个单一包 ...只要你开始尝试将基于数据流的协议放在基于数据报的协议上 - 那么只要它必须可靠,你就会很快地结束TCP。
如果你可以给我们你想要做什么(包括可靠性约束? - 如何严重的是,如果一个数据包丢失)的详细信息,我们也许能够帮助你。
向我们展示你的代码,并告诉我们你得到确切的错误信息。 –
数据报不是最好的发送对象,因为你不能保证所有的数据包都会到达。 –
一些有用的链接:[Java Tip 40:通过数据报数据包进行对象传输](http://www.javaworld.com/javaworld/javatips/jw-javatip40.html)和[在java中使用UDP发送和接收序列化对象]( http://*.com/questions/3997459/send-and-receive-serialize-object-on-udp-in-java) –