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_Packet - Fatal编程技术网

Java套接字问题,缓冲区同时接收两个数据包。

Java套接字问题,缓冲区同时接收两个数据包。,java,sockets,packet,Java,Sockets,Packet,我正在使用Java套接字API进行通信。但有时我会收到一个包,一个包连在一起。我怎样才能避免同样的情况呢。在JavaNIO或JavaNIO2中有没有解决这个问题的方法。我确信这些包裹是分开来的。但两者都存储在一个缓冲区中 请注意,这里的数据包只是数据的逻辑分离。数据由第三方系统发送。他们一个接一个地发送。但我同时收到两个包裹 这就是它应该工作的方式。TCP使用数据包传输数据,但从高级套接字API看不到数据包:打开输出流并发送所需的数据。此数据由TCP/IP协议栈拆分为数据包。在接收端,您打开一个

我正在使用Java套接字API进行通信。但有时我会收到一个包,一个包连在一起。我怎样才能避免同样的情况呢。在JavaNIO或JavaNIO2中有没有解决这个问题的方法。我确信这些包裹是分开来的。但两者都存储在一个缓冲区中


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

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


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

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


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

+1:简而言之,您只有一个字节流。任何关于数据包或消息的概念都是一种错觉,你需要添加它。我的意思是数据包意味着消息。它是由第三方系统发送的。@Kamahire:如果它们是由第三方系统发送的,它们应该有一些格式,您需要对其进行解析。是的,有。每个消息都有特定的大小。+1:简而言之,您只有一个字节流。任何关于数据包或消息的概念都是一种错觉,你需要添加它。我的意思是数据包意味着消息。它是由第三方系统发送的。@Kamahire:如果它们是由第三方系统发送的,它们应该有一些格式,您需要对其进行解析。是的,有。每条消息都有特定的大小。