Java Socket问题,缓冲区同时收到两个数据包。

时间:2011-03-29 11:01:10

标签: java sockets packet

我正在使用Java Socket API进行通信。但有时我得到的,数据包附加在单个数据包中。我怎么能避免这一点。是否有任何方法可以在Java NIO或Java NIO 2中解决相同问题。我确信数据包是分开进行的。但两者都存储在单个缓冲区中。

请注意,这里的数据包只是逻辑上的数据分离。数据由第三方系统发送。他们一个接一个地发送。但我同时收到两个数据包。

1 个答案:

答案 0 :(得分:4)

这是应该的方式。 TCP使用数据包传输数据,但是从高级套接字API中看不到:您打开输出流并发送所需数据。该数据由TCP / IP协议栈分成数据包。在接收端,您打开输入流并接收数据,而不知道它已被分成数据包。

如果你想要两个应用程序级数据包,那么设计一个传输协议,使用你的数据包之间的分隔符,或固定大小的数据块,或其他任何东西,以区分什么是逻辑数据包的一部分和什么是一部分的逻辑数据包。下一个。