用于网络通信的良好EOF字节

Dav*_*vid 3 c# sockets network-programming tcp eof

我正在为交钥匙网络通信编写ac#库.我正在寻找一个非模糊的字节,我可以在我的库中使用它来指示数据块的结束.目标是能够发送任何文件或字符串,无论格式如何.Null字符是否会这样做,以至于它不会与TCP连接混淆,并且任何文件或字符串都不应该在它的数据中.

提前致谢.

编辑:BTW客户端和服务器都是我的库的一部分,因此它不需要遵守任何其他标准.

在Answers之后:我将创建一个X字节数组,然后使用最后一个字节来指示EOF是否位于(X-1)字节块中.

Eri*_* J. 10

你问不可能

"任何文件或字符串"可以包括任何字节序列.

这使得完全不可能找到EOF字节.即使是字节序列也不能保证在所有情况下都能正常工作.

解决方案:提前知道文件大小

发送数据长度作为通信标头的一部分.

解决方案:文件大小未知/流媒体

定义一个包含标记的数据结构,以确定是否有更多数据与文件内容分开.

  • @ user1580785:C使用nul字符标记*string*的结尾,而不是标记任意二进制数据的结尾.二进制数据通常具有相同概率的所有字节. (2认同)