本项目提供一个多客户端MFC Socket编程实例及配套服务器端代码,演示了基本的即时通讯功能,适用于学习网络通信技术。
环境:Windows XP SP3, VC++ 6.0 和 Windows 2003 SDK。
使用步骤如下:
1、下载并解压文件后,利用VC++ 6.0打开两个工程——SocketServer和ClientSocket。
2、首先运行服务器端程序,并选择默认的端口为10083;接着启动客户端程序,默认设置包括端口1008及服务器地址。
3、可以同时开启多个客户端进程进行测试;
4、如果一切配置正确,每个客户端发送的消息都能在服务端和各个客户端上同步显示。
实现一个服务器对多客户端通信的关键在于,在服务端使用CPtrList类来存储所有连接的socket对象,这种设计思路类似于Java中的编程思想。然而,与Java中通常采用多线程技术并在Vector集合保存客户端socket不同的是,MFC框架提供了CSocket类支持异步通信功能, 因此代码实现起来比简单的Java多线程更为简洁。此外,MFC还通过提供CSocketFile和CArchive类来协助完成C++的网络编程任务。
本示例包含详细的注释,并且将所有辅助类放置在一个名为util的目录中,同时在工程中单独设立一个文件夹管理这些辅助类, 使得代码清晰易懂。手动编写的部分按照Java规范书写(使用驼峰命名法),而IDE生成的部分则遵循MS风格。
对于希望理解此示例的人来说,在服务端应从回调方法onAccept开始阅读;而在客户端,主要关注OnSendButton函数即可了解整个程序的运作逻辑。适合具备一定Java Socket编程经验并且期望编写效率更高的即时通讯应用的人士参考使用。