IOCP完成端口源代码

Posted on 2011-07-04 11:40 chugf 阅读(4130) 评论(13)  编辑 收藏 引用

关于IOCP完成端口的介绍有很多,这里就不介绍概念了。

如果不考虑跨平台问题,在Windows下IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。

以下是本人开发的IO完成端口服务器/客户端介绍:

名称:x-net

版本:1.0.0

特点:针对TCP网络通讯进行封装,使用widows下效率最高的IOCP通讯方式,工程包括服务端和客户端。
      可应用于即时网络通讯、跨平台网络通讯等。
功能:
      1、支持多用户并发连接通讯,理论支持10000+在线用户,实际运行5000+左右
      2、支持自定义通讯头协议,代码里实现了一个简单的组包拆包功能
      3、支持转发通讯包服务
      4、支持文件下载上传

说明:
使用了开源日志库log4cplus,网址:http://log4cplus.sourceforge.net/
简单用例见test目录:
test.vcxproj             -- VS2010工程
test_2005.vcproj   -- VS2005工程

源代码下载地址:http://code.google.com/p/x-net/

Feedback

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-04 15:15 by Enic
楼主,你确定你用的是Window IOCP技术?

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-04 21:22 by 会员管理系统
感谢博主分享,下下来调试下看效果如何先

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-04 23:11 by 漂漂
编译有两个问题:可能是版本没有对应。
#include "Queue.h"
#include "Queue.h"

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-05 09:45 by chugf
我在VS2010和VS2005下都编译成功的,“Queue.h”文件在“include”目录下的

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-05 09:45 by chugf
@Enic
有问题吗?
有错误欢迎指正.

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-05 14:44 by Benjamin
vc10编译test编译错误:
LNK1104: cannot open file 'xnet_d.lib'
VC10编译xnet的编译错误:
fatal error LNK1104: cannot open file 'xnet_d.lib'
x-net\source\queue.cpp(2): fatal error C1083: Cannot open include file: 'comm\Queue.h': No such file or directory
x-net\source\iocp.cpp(2): fatal error C1083: Cannot open include file: 'comm\IOCP.h': No such file or directory

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-05 15:20 by chugf
@Benjamin
把#include "comm\Queue.h"改为#include "queue.h"
#include "comm\IOCP.h"改为#include "iocp.h"
我在修改路径的时候忘记改.cpp文件了,不好意思

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-05 23:04 by Benjamin
改过头文件后,VC10运行test错误:
\x-net\bin\debug\log4cplusD.dll', Cannot find or open the PDB file;

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-06 09:05 by chugf
@Benjamin
开源日志库log4cplus,网址:http://log4cplus.sourceforge.net/
下载后自己编译一下就OK了,我没有打包进去

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-06 12:26 by Marvin
国内的高手越来越多了

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-07 22:21 by 放屁阿狗
linux里面的iocp叫epoll,反正很多人老提这个iocp,原理其实也很简单,直接由kernel调度反射回user空间的函数地址,提高效率,但往往软件的性能不是在于连接数和底层通信性能的提高,而是软件的其他应用部分做的很差,比如不考虑数据的访问负荷等等,这些问题不注意,下面做的再好也是白搭,所以我觉得比较无趣

# re: IOCP完成端口源代码  回复  更多评论   

2011-07-08 09:01 by chugf
@放屁阿狗
我只是提供一个通讯架构,而不是一个完整的解决方案。网上有开源的ACE,功能肯定比我的强大。

# re: IOCP完成端口源代码  回复  更多评论   

2012-12-11 13:55 by jacey
我喜欢!感谢楼主!

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


posts - 5, comments - 22, trackbacks - 0, articles - 0

Copyright © chugf