UDP包过大,如何解决多次发送,接收问题?

lxj_com2006 2007-02-28 10:13:01
UDP包过大,如何解决多次发送,接收问题?

...全文
1257 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxc028 2007-03-03
  • 打赏
  • 举报
回复
zhangxuyu1118(zxy)
对你的方法我很欣赏,你有没有具体代码拿出来让我学习一下
小呆之家 2007-03-02
  • 打赏
  • 举报
回复
用“滑动窗口”方法是比较好的。

数据包定义:
起始字节,总包数,包号,包长度,数据区,CRC,结束字节
应答包定义:
起始字节,总包数,包号,接收结果,CRC,结束字节
constantine 2007-02-28
  • 打赏
  • 举报
回复
即使用TCP也一样要考虑协议的问题,包的格式还是要定义的,而且同样有MTU的限制,差别不大
constantine 2007-02-28
  • 打赏
  • 举报
回复
head+body
包头需要包括一些描述性的东西,比如包的类型,包的编号,甚至子编号,结束标记之类...
body就是你要发送的具体内容

把【head+body】当一个包发送,接收端先读取包头,判断类型区分处理,然后就是根据包头进行读取包身内容进行处理,没有收到结束标记不用停。
udp的包一般不1k多点就行了,太大会受MTU限制,路由要重新拆包,没有效率,太小也一样。
numbbb 2007-02-28
  • 打赏
  • 举报
回复
建议用TCP/IP传输
zhangxuyu1118 2007-02-28
  • 打赏
  • 举报
回复
自定义协议,分包处理。
我的方法是:
协议:包头 + 包类型 + 包内容 + 包尾。
分包处理:首先发送包:描述包的ID、大小、分几次发送等内容;
然后分批发包(包序号、大小、内容);
然后发送发完标志;
然后是检查包的完整性,
然后请求重发,
最后拼包
dragonki 2007-02-28
  • 打赏
  • 举报
回复
你发送的数据包,应该有个定义有一个固定长度的包头,接收取数据,先读出来,里面应该有本次发送数据的总长度,然后就等接收剩下的数据或超时了。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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