飞鸽传书代码泄漏

来源:互联网 发布:linux 文件匹配 编辑:程序博客网 时间:2024/05/16 00:59

作为最知名的即时通讯软件,飞鸽传书可以说是历史悠久,用户极多。今天,看了看飞鸽传书的原创作者的网站,无意发现了他的源代码,有了源码,我们可以把它编译成任何语言的版本。
这个版本看起来比较简单,只可以发送消息和文件,但是,整个框架是健壮的,稳定的。要在上面添加任何特殊功能都非常简单。
1. 首先要先读懂代码(读代码当然需要花时间啦,别想一看就懂,需要耐心,慢慢看,一行一行看)。
2. 然后开始设计自己的功能,最好先单独把功能做好,然后再集成到飞鸽传书里。
3. 开始测试集成的新功能,最好你有几台电脑,这样测试更方便(要在同一台电脑上测试,会很复杂,很困难)。

新版本做好之后,你就可以到朋友面前晒晒了,系统包括采用4IOCP。其中一个TCP IOCP用作管理员客户端连接,以及将来的服务器聚合扩展;一个飞鸽传书TCP IOCP用于用户客户端登陆登出,以及数据补包;一个UDP IOCP用于心跳、P2P打洞处理、中转聊天的文字消息(包含系统表情);一个UDP IOCP用于中转聊天的非文本数据(比如图像)。4个IOCP间的桥接及系统日志、管理员日志、用户日志、插件日志均采用队列处理。系统所有内存使用均有专门的内存管理器负责管理。至于UDP为什么也要采用IOCP,原因则是,虽然普通的UDP已经很快了,但是,每次发送,接收仍均需要阻塞等待。虽然每次阻塞的时间很短,但积少成多,在大量连接的情况下,仍然会比较可观。而采用飞鸽传书IOCP,则就是为了经量减小每次阻塞的时间。

个人觉得没必要使用那么多IOCP,其实这样子做的目的是逻辑上面更加清晰,线程更加专用化,第一个IOCP其实就对应着一个线程池,但是这样子可能存在的就是线程的利用率不高.对于内存池,个人觉得也没有必要太过专职化,应该是根据线程(最好是CPU核心)进行分离,从而减少线程之间的同步消耗,另一个更为重要的是为往后NUMA技术的应用.

如果你把线程都指定到相应的CPU核心上,而把在同一核心上的线程看做是一组,那么在同组之内的线程同一时间肯定就只有一个访问某一资源了...

原创粉丝点击