哪位高人自己写过协议?高手新手请进

sunnysab 2013-09-11 10:17:30
想自己实现一个文件传输协议,简单点的,但是其中要用到结构体,可是结构体的长度是固定的,也就是说我需要这么定义:
struct
{
int FileSize;
char FileName[128];
};
量不小啊,如果要获取system32下所有文件的信息,system32下大约1000多个文件,需要132000字节来传输数据,合计132K。。
另外,windows文件名长度的标准不止128,那么还要加大……

等到抓包时看到屏幕上全部都是0x00,该多么可怕!

有谁自己写过某协议?不使用struct行吗?看现在许多协议都是使用结构体
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
czc1009 2013-09-14
  • 打赏
  • 举报
回复
可以模仿tcp/ip,将内容替换成你要发送的文件名就好~~~ head:id,type,length,crc body:传输内容
sunnysab 2013-09-12
  • 打赏
  • 举报
回复
若使用struct,里面的字符串大小就得固定,占带宽和内存 谢谢前辈指导,再试试看
木头菇 2013-09-12
  • 打赏
  • 举报
回复
用结构体用什么那只是为了方便,最终你的协议形成的就是二进制流。 你的字符串可以设计成“4字节+buffer = string”个样子,前4字节表示buffer长度,这样就是可变长字符串的协议了。 另外你描述的1000多个文件什么132K,你想表达什么?
oyljerry 2013-09-12
  • 打赏
  • 举报
回复
结构体转成字符串等传输,然后大数据可以一个个包分批发送,带上一个ID,接收端全部接收下来再处理
傻X 2013-09-12
  • 打赏
  • 举报
回复
固定通信码+帧头+帧长+帧内容+CRC校验
yaozhiyong110 2013-09-12
  • 打赏
  • 举报
回复
引用 3 楼 sunnysab 的回复:
若使用struct,里面的字符串大小就得固定,占带宽和内存 谢谢前辈指导,再试试看
谁说要固定 你的结构应该这样定义 struct { int FileNameLen; int FileSize; } 接着传filename(是10就是10是100就是100) 再接着传file 这样传1000个文件 文件名的消耗是真实文件名长度总和+4000的FileNameLen 总比你1000个文件都用最大的char FileName[128];节省的多

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧