Delphi IOCP UDP完成端口服务端——网络高速传输数据文件系统架构
Posted gamedelphi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi IOCP UDP完成端口服务端——网络高速传输数据文件系统架构相关的知识,希望对你有一定的参考价值。
嗯,是的,标题有些那个,不过浏览器搜索出来的几乎全部是C++的,Delphi这块完全是空缺的。
不知道各位Delphi的爱好者们有没有关注腾讯这段时间的各种信息推广。涉及到各方面的行业。
不过我最佩服的是他们的实时各种网络行为,不得不说,他们的服务器确实牛逼,各种实时网络视频各种交互都是相当流畅的。
除了TCPIOCP完成端口成型之外,在这个基础上,继续调试出了UDPIOCP完成端口系统,弄这个玩意就是想做一个能够在目前这种复杂无比的网络中,能够完成游戏资源实时更新的一个高并发服务系统。
现在的网络简直复杂得像一堆牛屎那样,你看看你桌面上的任何一个程序,有几个是不联网的?几乎没有吧!现在的玩家有几个电脑上面是不同时打开几个程序的,QQ,各种音乐播放器,各种视频播放器等等,这些都是抢夺带宽最厉害的玩意。所以传统的TCP协议的网络传输系统已经很难符合目前这种复杂的环境了。
UDPIOCP完成端口这个玩意,构建起来不容易,网上能用的代码,一句话:没有!不相信,自己搜索搜索。
这个玩意比TCP完成端口还复杂。
两个控件,一个UDP服务端,一个UDP客户端,至于客户端是自己新写的,内含两种设置,一种是采用常规TCP那样的链接模式,一种是非链接模式,可以设置阻塞或者异步传输。
上面客户端采用定时器,值设置为10,这种速度发送消息比较快了,上面是两者的CPU占用情况。在完全没有优化之下,其实是非常暴力的。
整个控件完全保持原生态,只做错误对应策略,不掺合各种,比如包检测,包重传,采用哪种传输模式等等,这些都会放到外部去。也就是说,没有各种脑子进水的各种加加加。一个字,系统稳定才是最重要,做到了这一点,无论使用在哪种场合下,都能让人放心。因为流程就是这个流程。
我希望这个系统能够胜任在游戏资源实时更新,比如游戏微端,所谓的轻客户端方面以及实时视频更新啦,各种监控系统啦这些环境下,这样就够OK了。
代码呢,就不写了,毕竟关注delphi的人,在国内已经很少了。算了,不写了。
以上是关于Delphi IOCP UDP完成端口服务端——网络高速传输数据文件系统架构的主要内容,如果未能解决你的问题,请参考以下文章
理解I/O Completion Port(完成端口)(转载)