Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Node.js TCP和哈希验证_Node.js_Flash_Networking_Tcp_Air - Fatal编程技术网

Node.js TCP和哈希验证

Node.js TCP和哈希验证,node.js,flash,networking,tcp,air,Node.js,Flash,Networking,Tcp,Air,我使用Nodejs和adobeair通过TCP发送文件,但是当涉及到移动设备时,Actionscript中的哈希变得非常慢 我的问题是:我真的需要在传输后验证文件的散列,还是TCP协议确保了完整性 谢谢 根据您发送文件的确切方式,接收者可能无法确切地知道它收到了整个文件。在某些情况下,可能会在文件完全接收之前断开连接。验证文件的校验和(散列)应确保已收到整个文件。TCP确保按顺序传递和要求传输的数据的完整性。这并不意味着对等方传递给TCP的数据首先是有效的。@Asblarf如果我确定数据是有效的

我使用Nodejs和adobeair通过TCP发送文件,但是当涉及到移动设备时,Actionscript中的哈希变得非常慢

我的问题是:我真的需要在传输后验证文件的散列,还是TCP协议确保了完整性


谢谢

根据您发送文件的确切方式,接收者可能无法确切地知道它收到了整个文件。在某些情况下,可能会在文件完全接收之前断开连接。验证文件的校验和(散列)应确保已收到整个文件。

TCP确保按顺序传递和要求传输的数据的完整性。这并不意味着对等方传递给TCP的数据首先是有效的。@Asblarf如果我确定数据是有效的,不验证散列可以吗?我不知道如何在接收方不知道的情况下切断连接。如果他使用读取超时,他将获得一个读取超时,或者一个异常,或者一个有效的流结束。当且仅当他获得有效的流结束时,才接收到整个文件。大多数TCP套接字实现仅表明连接已关闭(通常在下一次
read()
时返回0字节)。除非接收者知道应该有更多的数据,否则它无法分辨早期收盘和正常收盘之间的区别。这正是HTTP在响应和
POST
请求中包含
Content Length
头的原因。我知道,如果我不验证是否传输了所有数据,连接可能会丢失一些数据包,使整个文件无效。在传输开始时发送一个内容长度不是更好和更快吗?@福米加丢失中间包不会伤害-你正在使用TCP,发送者和接收者将合作以确保所有的数据包都被接收或者连接被关闭。是的,像HTTP的
内容长度
头这样的东西很有帮助——这就是HTTP拥有它的原因。但您询问的是TCP,而不是HTTP,TCP没有“预期的数据大小”。