首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送流终止字节以指示TCP流的结束

发送流终止字节以指示TCP流的结束
EN

Stack Overflow用户
提问于 2021-07-10 09:45:10
回答 1查看 84关注 0票数 0

例如,我希望在TCP上流一些内容,例如文件共享(读取文件的字节)或进程的输出(stdin、stderr、stdout),通过管道使用CreateProcess波芬。我无法计算以字节为单位的流输出大小。如果我要发送一组特定的特殊字符,以指示流已经结束供服务器/客户端解析,这是否实用和安全?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-10 11:31:25

如果我要发送一组特定的特殊字符,以指示流已经结束供服务器/客户端解析,这是否实用和安全?

如果文件的内容可以是任意二进制数据,那么,不,这本身并不是一种“安全”的方法,因为您使用的“特定的一组特殊字符”可能出现在文件的某个位置,因此它们将通过连接发送,接收方会认为文件在没有结束时已经结束。

(我说这不是“安全”,意思是不能保证正确地传递文件,因为它不清楚您所说的“实际”或“安全”是什么意思。不受什么保护?是否有攻击者将文件发送给您,这样他们就可以以恶意的方式完成它们?如果已知所有文件只包含纯文本ASCII字符,则可以“安全地”使用非ASCII字符作为哨兵。)

有无数种方法可以制定协议来发送任意数据。您可以先发送长度(尽管随后需要确定长度要使用多少位,或者设计一些协议来发送任意多个比特的长度)。您可以以块(例如512字节)发送数据,并首先发送每个块及其长度。只要长度为512字节,就意味着相同数据的另一个块即将出现。一旦长度小于512字节(包括0),就意味着这是数据的最后一个块。您可以以引号字符串的形式发送数据,从"开始,然后后面跟着数据的字节,只不过数据中的每个"实际上以\的形式发送,然后"和数据中的每个\被发送为\\,然后数据的末尾由" (而不是转义数据的\ )表示。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68326588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档