首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

前不久要做socket,自己拟了个封包协议,帮忙看看可行性

2012-12-30 
最近要做socket,自己拟了个封包协议,帮忙看看可行性每个完整的封包由三个部分组成:封包头 + 数据(可选) +

最近要做socket,自己拟了个封包协议,帮忙看看可行性
每个完整的封包由三个部分组成:封包头 + 数据(可选) + 文件流(可选)

封包头为一个结构类型,总长度为 15 字节

PacketFlag: Char        // 1字节。用字符“#”表示封包头的开始
Action: WORD           // 2字节。用于描述该封包的行为
XmlSize: DWORD       // 4字节。XML文件的大小(不含封包头)
FilesSize: ULONG64   // 8字节。表示所有传输文件大小的总和。仅仅用于传输文件的封包

封包头后接着就是一个XML文件流,包头中XmlSize表示其大小

XML流后就是传输的文件流(可通过封包头中的Action或FilesSize判断是不是一个传输文件的封包)
如果是传输文件的封包,则XML流结束后接着就是文件流,文件的相关信息在XML文件中描述,要注意顺序要与XML中对应
[解决办法]
仔细想了想,以传文件为主的应用,不能等数据到齐了才通知用户层,而应该是
OnPackctBegin,OnPacketData,OnPacketEnd;应该是这样才好,

感觉你是想一次传递多个文件,而不是一次一个文件,因此用了XML在中间,这种情况,不是很好处理断点续传哦,还是单个单个地传好一点。

断点续传就得加一个Offset头来表示位置,最好再加一个以及BeforeCRC32来表示已传部分的CRC32值,以保证文件的准确性.

。。。。。

热点排行