开发环境: VS2010
开发语言: C++
Winsock I/O模型: IOCP (完成端口模型)
代码示例包括Client和Server, common下包括Functor和Thread两个模块。Functor封装了函数对象,用于各种Callback;Thread封装了线程函数对象,用于将类的成员函数绑定到一个线程来执行。
server路径下IServer定义了服务端的接口,CompletionPort实现了IServer,并利用观察者模式和上层解耦。Server的实现分解为IoData, SocketContext, Disposer, Initializer, Parser, Poster, Creator几个主要的模块,并通过CompletionPort包装为统一的接口。其中对于连接的监听采用了AcceptEx函数来实现异步的Accept,该过程定义在WatchProc所对应的线程函数中。IOCPTest定义了服务端的测试接口,可以通过控制命令来实现对Server的Start, Stop, Suspend, Resume操作。
client下IClient定义了客户端的接口,SocketClient实现了IClient,通过ConnectProc以及SendPacketProc两个过程分别控制连接的建立和数据包的发送,并通过队列来管理连接到Server的socket。ClientTest定义了Client端的测试接口,可以自行定义配置信息。
Server运行的过程中会记录日志文件,方便查看服务器的运行状态。