例如,我希望在TCP上流一些内容,例如文件共享(读取文件的字节)或进程的输出(stdin、stderr、stdout),通过管道使用CreateProcess或波芬。我无法计算以字节为单位的流输出大小。如果我要发送一组特定的特殊字符,以指示流已经结束供服务器/客户端解析,这是否实用和安全?
发布于 2021-07-10 11:31:25
如果我要发送一组特定的特殊字符,以指示流已经结束供服务器/客户端解析,这是否实用和安全?
如果文件的内容可以是任意二进制数据,那么,不,这本身并不是一种“安全”的方法,因为您使用的“特定的一组特殊字符”可能出现在文件的某个位置,因此它们将通过连接发送,接收方会认为文件在没有结束时已经结束。
(我说这不是“安全”,意思是不能保证正确地传递文件,因为它不清楚您所说的“实际”或“安全”是什么意思。不受什么保护?是否有攻击者将文件发送给您,这样他们就可以以恶意的方式完成它们?如果已知所有文件只包含纯文本ASCII字符,则可以“安全地”使用非ASCII字符作为哨兵。)
有无数种方法可以制定协议来发送任意数据。您可以先发送长度(尽管随后需要确定长度要使用多少位,或者设计一些协议来发送任意多个比特的长度)。您可以以块(例如512字节)发送数据,并首先发送每个块及其长度。只要长度为512字节,就意味着相同数据的另一个块即将出现。一旦长度小于512字节(包括0),就意味着这是数据的最后一个块。您可以以引号字符串的形式发送数据,从"开始,然后后面跟着数据的字节,只不过数据中的每个"实际上以\的形式发送,然后"和数据中的每个\被发送为\和\,然后数据的末尾由" (而不是转义数据的\ )表示。
https://stackoverflow.com/questions/68326588
复制相似问题