我所热衷的编程生涯 连载(4)

来源:互联网 发布:淘宝一元拍是什么意思 编辑:程序博客网 时间:2024/04/27 10:43

    接上回说~

    可靠UDP通讯, 其实目前已经有很多已实现的现成方式, UDT, RUDP, RDP等, 有兴趣的同学可以去百度下.

    不过我还是老习惯, 自主创新, 重头做起.

    可靠UDP通讯需要解决的问题: 1. 数据丢包. 2. 数据包乱序. 3. 流量控制. 4. 数据收发性能.

    第一, 二个问题我想到的解决办法是数据重发与数据组包. 现成的方式就是滑动窗口协议, 想到就做, 后续的三,四个问题我们下个帖子再讨论.

    通过查找资料, 分析算法, 画流程图, 最终简单的实现了协议, 通过测试还是发现效果一般, 而且当网络状态相当差的时候, 比如网络阻塞, 流量限制等这种情况下, 滑动窗口出现因反复重发数据导致的"窗口停滞滑动", 导致发送效率下降. 我感觉这可能是个弱点, 因为还没有涉及到数据发送的流量控制策略, 而且就算后续加入这种策略可以解决这个等待重发成功所造成的"空耗", 那么也不是最佳的方案, 毕竟空耗始终在空耗. 为此我想到了多线程并行通讯, 这样的话虽然会增加对资源的消耗, 但是可以很好的弥补这种空挡.

    数据重发:

   

 

    整体收发流程图:

   

 

    另外大家都知道Socket通讯模式有: 阻塞模型, Select模型, 异步选择模型, 事件选择模型, 重叠I/O模型, 完成端口模型.

    我很想用完成端口模型, 但是这种模型对系统是有要求限制的, 只有用于NT系统, Win2000系统. 对于后续扩展和发布都不是很方便的. 所以我选择了重叠I/O模型中的完成例程模式. 加上多线程并发发送数据, 队列化任务化处理数据, 整体性能还是有所保证的.

    后来实现出来进行测试, 效果确实比较好了.

    未完待续....

   

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚申请的阿里大宝卡不想要了怎么办 国美刚买不到一个月电视坏了怎么办 交保险后保险公司不给开收据怎么办 收据白联作废红联丢失怎么办 收据作废客户联给客户了怎么办 宜家买的床和床垫搬家了怎么办 科龙空调开机后自己关机怎么办 以旧换新旧的没给商家 报案怎么办 想换新手机但是旧的没坏怎么办 从苏宁易购买的电视坏了怎么办 苏宁易购服务站买的电视坏了怎么办 用微信登陆京东账号退不出来怎么办 微信账号密码手机号都忘记了怎么办 我的手机号京东被别人绑定了怎么办 京东之前绑定的手机号不用了怎么办 京东退货钱未到银行卡账号里怎么办 京东身份证绑的手机号不用了怎么办 海尔冰箱要退货箱子扔了怎么办 海尔冰箱门变形关不严没吸力怎么办 长时间不用的手机忘记密码怎么办啊 微信忘记密码手机号又不用了怎么办 华为账号换了手机密码忘记了怎么办 用u盘制作音响喊话内容怎么办 新三板公司退市了小股东怎么办? 新三板公司退市股东股票怎么办 利群收购乐天玛特超市卡怎么办 买房过户夫妻一方是外省户口怎么办 欠了国美金融贷款没钱还会怎么办? 国企员工涨工资不在编的员工怎么办 装车牌照的螺丝孔小了怎么办 北京摇号之后中签和未中签怎么办 拉轿车的大车出车祸车怎么办 美图m6手机忘记锁屏密码怎么办 微信验证码登录收不到验证码怎么办 微信被限制登录收不到验证码怎么办 微信登录申诉收不到短信怎么办 登录微信手机收不到验证码怎么办 美图t8冲一会电就发烧怎么办 美图t8系统不小心升级了 怎么办 美图手机看相册视频就会变黑怎么办 苹果4s屏幕唤醒速度慢怎么办