我正在实现此example,因为我想向多个客户端广播。在尝试使用套接字发送另一个对象(已经被序列化)时,我收到一个错误,说明套接字(在示例中)无法通过它发送对象。数据报套接字也不能发送/接收对象吗?
答案 0 :(得分:4)
不一般,没有。数据报包通常相对较小 - 你可以尝试将对象序列化为ByteArrayOutputStream
包裹在ObjectOutputStream
中,然后尝试发送字节数组 - 但你很可能发现它变得太快了。
使用更高效的序列化格式(例如Protocol Buffers)可能会让您在单个数据包中获取更多信息,但通常您需要序列化为流而不是一个数据包 ...并且一旦你开始尝试将基于流的协议放在基于数据报的协议上 - 好吧,一旦它必须快速,你就会很快得到TCP的结果是可靠的。
如果您可以向我们提供您正在尝试做的更多详细信息(包括可靠性限制 - 如果数据包丢失有多严重?),我们可以为您提供更多帮助。
答案 1 :(得分:1)
最好的办法是使用TCP或其他库,例如jGroups
JGroups是用于可靠多播通信的工具包。