我正在实现这个示例,因为我想向多个客户端广播。在尝试使用套接字发送另一个对象(已被序列化)时,我收到一个错误,指出套接字(在示例中)无法通过它发送对象。数据报套接字也不能发送/接收对象吗?
问问题
1442 次
2 回答
4
不是一般的,没有。数据报数据包通常相对较小——您可以尝试将对象序列化为ByteArrayOutputStream
包装在 an 中的对象ObjectOutputStream
,然后尝试发送字节数组——但您很可能会很快发现它变得太大。
使用更有效的序列化格式(例如协议缓冲区)可能会让您在单个数据包中获得更多信息,但通常您希望序列化为流而不是单个数据包......并且一旦您开始尝试将基于流的协议置于基于数据报的协议之上——好吧,只要它必须是可靠的,你就可以相当快地得到 TCP。
如果您可以向我们提供有关您正在尝试做的事情的更多详细信息(包括可靠性限制 - 如果数据包丢失有多严重?),我们可能会为您提供更多帮助。
于 2011-10-02T17:20:31.357 回答
1
您最好的选择是使用 TCP 或其他库,例如jGroups
JGroups 是一个可靠的多播通信工具包。
于 2011-10-02T17:24:18.000 回答