Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过java数据报套接字发送对象_Java_Sockets_Datagram - Fatal编程技术网

通过java数据报套接字发送对象

通过java数据报套接字发送对象,java,sockets,datagram,Java,Sockets,Datagram,我实现这一点是因为我想向多个客户端广播。在尝试使用套接字发送另一个对象(已序列化)时,我收到一个错误,该错误表示套接字(在示例中)无法通过它发送对象。数据报套接字不能同时发送/接收对象吗 一般来说,不是。数据报数据包通常相对较小-您可以尝试将对象序列化为ByteArrayOutputStream封装在ObjectOutputStream中的,然后尝试发送字节数组-但您可能会发现它很快变得太大 使用更高效的序列化格式(例如)可能允许您在单个数据包中获取更多信息,但通常您希望序列化到流而不是单个数据

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

一般来说,不是。数据报数据包通常相对较小-您可以尝试将对象序列化为
ByteArrayOutputStream
封装在
ObjectOutputStream
中的
,然后尝试发送字节数组-但您可能会发现它很快变得太大

使用更高效的序列化格式(例如)可能允许您在单个数据包中获取更多信息,但通常您希望序列化到流而不是单个数据包。。。一旦您开始尝试将基于流的协议置于基于数据报的协议之上,那么,只要TCP必须可靠,您就可以很快地使用TCP


如果您能向我们提供您正在尝试做的事情的更多详细信息(包括可靠性限制-如果数据包丢失会有多严重?),我们可能会为您提供更多帮助。

一般来说,不会。数据报数据包通常相对较小-您可以尝试将对象序列化为一个
ByteArrayOutputStream
封装在
ObjectOutputStream
中的
,然后尝试发送字节数组-但您可能会发现它很快变得太大

使用更高效的序列化格式(例如)可能允许您在单个数据包中获取更多信息,但通常您希望序列化到流而不是单个数据包。。。一旦您开始尝试将基于流的协议置于基于数据报的协议之上,那么,只要TCP必须可靠,您就可以很快地使用TCP


如果您能向我们提供有关您正在尝试执行的操作的更多详细信息(包括可靠性约束-如果数据包丢失会有多严重?),我们可能会为您提供更多帮助。

您最好使用TCP或其他库,如

JGroups是一个用于可靠多播通信的工具包


您最好使用TCP或其他库,如

JGroups是一个用于可靠多播通信的工具包


向我们展示您的代码,并告诉我们您收到的确切错误消息。数据报不是发送对象的最佳方式,因为您不能保证所有数据包都会到达。一些有用的链接:并向我们展示您的代码,并告诉我们您得到的确切错误消息。数据报不是发送对象的最佳方式,因为您不能保证所有数据包都会到达。一些有用的链接:和