这是我照着
/*++
Copyright (c) 2004
模块名:
iomodel.h
模块描述:
Winsock 完成端口类头文件
作者:
PPP
开发环境:
Visual C++ 6.0, Windows 2000.
修订记录:
创建于: 2004.1.16
最后修改日期:
2004.1.23
--*/
的完成端口例子,做的一个完成端口练习。
我把代码写的更清晰了一些。
还有一点,就是,我使用了一个,我叫做“双链表”的数据结构来管理IO结点和单句柄结点。这个东西是用stl里的list做的。
最开始我是用MFC的CList实现的,但是后来觉得,MFC的使用环境有局限,所以就用stl重做了一次.
"双链表"的原理就是:
有时我们希望以前申请的一个内存结点,用完之后,不被删除,而是放到一个“池”中,以便以后用的时候,直接到“池”中取出一个结点就可以了。
也希望有一个管理正在使用的所有结点的简单方法,所以我用一个叫做“空表”来做为结点的“池”,用另外一个表来管理当前使用的结点。
然后用一个模板类来封装这两个表,并提供一些需要的方法,使使用都通过这些简单的方法,就可以完成所有的操作。
感觉这个“双链表”,在消息结点处理,需要队列的地方,很有用处。
///////////////////////////////////////////////////////////////////////////////////////
这个文件夹里,有一个用来测试的客户端。
我还没有测试很多个连接时会是什么样.
///////////////////////////////////////////////////////////////////////////////////////
改了几个地方,但是有个问题,我没有解决:
AcceptEx可以直接得到连接者的IP和PORT,据MSDN上说,它接收到的数据为:数据+local addr + remote addr,
但是我怎么解析都没有得到remote addr,请哪位高手帮忙了。
文章来源于领测软件测试网 https://www.ltesting.net/