Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 为什么使用LengthFieldPrepender/LengthFieldBasedFrameDecoder_Java_Tcp_Netty - Fatal编程技术网

Java 为什么使用LengthFieldPrepender/LengthFieldBasedFrameDecoder

Java 为什么使用LengthFieldPrepender/LengthFieldBasedFrameDecoder,java,tcp,netty,Java,Tcp,Netty,我想了一会儿,为什么我应该在TCP连接中使用and 我不明白为什么我唯一的想法是确保数据正确传输并检查长度,但如果我对TCP的理解正确,TCP本身应该处理数据正确传输 TCP协议应该正确处理数据传输。尽管在许多情况下,发送的数据量在接收时是未知的(即可变量) 为了解决这个问题,发送数据的长度被添加到数据包的报头中。如果我们知道长度是固定大小的n,那么我们可以读取n字节,然后下一个length字节保存数据。TCP是一个流协议。由应用程序对数据进行帧处理,即确定数据单元(数据包或消息)的开始位置和结

我想了一会儿,为什么我应该在TCP连接中使用and


我不明白为什么我唯一的想法是确保数据正确传输并检查长度,但如果我对TCP的理解正确,TCP本身应该处理数据正确传输

TCP协议应该正确处理数据传输。尽管在许多情况下,发送的数据量在接收时是未知的(即可变量)


为了解决这个问题,发送数据的长度被添加到数据包的报头中。如果我们知道长度是固定大小的
n
,那么我们可以读取
n
字节,然后下一个
length
字节保存数据。

TCP是一个流协议。由应用程序对数据进行帧处理,即确定数据单元(数据包或消息)的开始位置和结束位置。要可靠地实现这一点,有两种基本方法,一种是预先指定消息的长度,另一种是附加分隔符。有许多方法可以对预先指定的长度进行编码,也有许多可能使用分隔符。TCP协议不保证通过单次写入发送的数据将通过单次读取接收,尽管短消息通常如此。

这些参数根据自定义协议要求而变化。其中一行->在大多数情况下,长度字段仅表示消息正文的长度,如前面的示例所示。但是,在某些协议中,长度字段表示整个消息的长度,包括消息头。请浏览您的链接页面,以便更好地理解!