有数据包的套接字?我该怎么用?

时间:2011-07-21 20:21:11

标签: java android sockets

所以,我正在开发一个通过套接字与服务器通信的Android应用程序。现在,手机将不断从服务器获取数据。数据包的大小不一样。数据包的第一个字节是类型,然后,如果适用,接下来的四个字节表示大小。之后,是多少个浮点数(4个字节)。

阅读这些内容的最佳方式是什么?调用readByte(),readFloat(),readFloat()等,或者使用我偶然发现的这些数据报的东西?解释为什么。如果您想要更多细节以提出更好的建议,请询问。

谢谢,

2 个答案:

答案 0 :(得分:1)

听起来你想要DataInputStream和BuferredInputStream你的套接字输入流。 您不需要Datagrams,因为这是UDP而不是套接字。

然后我会使用readByte(),可选地是readInt(),然后是readFloat()等。

答案 1 :(得分:0)

IIUC,如果你在谈论JDK数据报,它们不是套接字,它们用于UTP通信,它比TCP轻但可靠性低,通常用于实时音频/视频流。

我将使用DataInputStream / DataOutputStream,并使用readByte,readInt,readFloat。这将为您节省大量有关在线上编码复数的详细信息,还可以添加(薄)错误检测层。

如果你在另一边有java,那应该没问题。如果你在另一边有C / C ++,请注意它可以(但不应该)使用little endian而不是big endian,在这种情况下你的数字(readByte除外)会出现乱码。您可以很容易地在java中找到用于阅读和小端数字的例程,但它可能会在最初的几个小时内引起一些痛苦的攻击:)