Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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
Javascript 检测在'上接收到的完整数据;数据';Node.js的网络模块中的事件_Javascript_Node.js_Sockets_Tcp - Fatal编程技术网

Javascript 检测在'上接收到的完整数据;数据';Node.js的网络模块中的事件

Javascript 检测在'上接收到的完整数据;数据';Node.js的网络模块中的事件,javascript,node.js,sockets,tcp,Javascript,Node.js,Sockets,Tcp,当前,当我们通过TCP发送大数据时,数据事件将以块的形式接收它。是否有一种方法可以检测到所有数据都已接收并返回完整的数据 当前,当我们通过TCP发送大数据时,数据事件将以块的形式接收它。是否有一种方法可以检测到所有数据都已接收并返回完整的数据 TCP只是一个连续的数据流。除非关闭连接并使用关闭的连接作为数据完成的信号,否则TCP级别的给定传输没有开始或结束 因此,如果您想知道给定数据块的开始和停止位置,您需要在发送的数据中设计一种方法来了解这一点(基本上构建您自己的小型有线格式或协议)。有无数种

当前,当我们通过TCP发送大数据时,数据事件将以块的形式接收它。是否有一种方法可以检测到所有数据都已接收并返回完整的数据

当前,当我们通过TCP发送大数据时,数据事件将以块的形式接收它。是否有一种方法可以检测到所有数据都已接收并返回完整的数据

TCP只是一个连续的数据流。除非关闭连接并使用关闭的连接作为数据完成的信号,否则TCP级别的给定传输没有开始或结束

因此,如果您想知道给定数据块的开始和停止位置,您需要在发送的数据中设计一种方法来了解这一点(基本上构建您自己的小型有线格式或协议)。有无数种不同的方法可以做到这一点,这就是为什么我们有这么多不同的协议建立在TCP之上的原因之一。两个最简单的方案是:

  • 发送数据包的长度,然后发送那么多字节。然后,接收者读取长度,并知道当它读取那么多字节时,它拥有整个区块

  • 使用某种不会出现在实际数据中的分隔符。例如,一些简单的协议使用换行符作为分隔符。发送一组文本,然后以换行符终止。接收者读取数据,直到他们得到换行符,这告诉他们拥有完整的数据块。根据数据的类型,有许多可能的分隔符

  • 其他协议,如webSocket或socket.io,都内置了基于消息的范例来为您完成这项工作。您在一端发送消息,然后在另一端接收整个消息

    根据您发送的数据类型(文本/二进制)、数据长度以及数据的字符(是否有可能不在实际数据中的分隔符),有些选项或多或少是合适的