1。3 即时通讯系统研究内容
由于即时通讯应用可以加装到台式机、手机、笔记本电脑等终端上,具有强大的通讯能力,能有效地降低通讯费用,提高通讯效率。
1、主要研究内容有以下几个方面:
(1)查阅相关资料,学习ACL框架的使用
(2)查找现阶段即时通讯软件的发展状况及相关功能
(3)学习C++开发语言中Socket编程技术
2、在上述研究基础上,本系统的相关功能如下:
(1)用户登录
(2)添加好友
(3)好友分组
(4)即时通讯(聊天)
(5)图片传输
(6)创建群组
(7)群组聊天
3、课题研究拓展方向:
(1)文件传输功能
(2)视频聊天功能
4、研究方法:
查阅网络通讯相关的书籍、文献资料、开源代码,进行系统地学习。和老师、同学还有对即时通讯有经验的朋友进行沟通交流学习。参考一些比较成熟的即时通讯软件功能。
第二章即时通讯系统相关技术
2。1 ACL框架
ACL框架是一个跨平台的网络通行库以及服务器端编程框架,而且提供更多实用功能库。通过该库,可以较为容易地编写支持多种模式的服务端程序。此外,该库提供了常见的客户端通信库(如:HTTP、ICMP、Redis、SMTP、memcache、beanstalk、hanlder socket),常见流式编解码库(如:XML、JSON、MIME、BASE64、UUCODE、QPCODE、RFC2047)。
ACL框架主要包含5个库:lib_acl、lib_protocol、lib_acl_cpp、lib_dict、lib_tls。
本项目主要使用了lib_acl、lib_acl_cpp和lib_protocol三个库。
其中lib_acl库是其他两个库的基础,lib_protocol库用来实现http协议,lib_acl_cpp则是对两个库进一步的封装。
2。2 C++访问数据库
本项目使用MySQL自身API函数进行数据库连接,步骤为:
(1)在附加包含目录中添加MySQL头文件。
(2)将动态链接库文件libmysql。dll和静态链接库文件libmysql。lib链接到项目中。
(3)在头文件中声明一下内容,如图2-1:
图2-1 头文件声明图
(4)编码连接MySQL数据库,首先在头文件中定义数据源指针,如图2-2:
图2-2 创建MySQL指针图
编写连接数据库代码,如图2-3:
图2-3 数据库连接代码图
返回0表示连接MySQL数据库失败。
返回1则表示连接MySQL数据库成功,此时数据库指针m_sqlCon指向一个数据库连接实例,可以使用MySQL自身的其他API函数对MySQL数据库进行各种操作。
2。3 LOG4CPLUS日志输出
大型的系统都需要打印日志来记录系统的状态、工作进度。日志也常被用来解决系统BUG、查看数据走向等。由此看来,记录系统日志尤为重要。所以本系统使用了LOG4CPLUS输出日志。
LOG4CPLUS是C++编写的日志系统,前身是java编写的log4j。
LOG4CPLUS具有线程安全、灵活等特点,通过将日志划分优先级使其可以面向程序进行调试、运行、测试以及维护。LOG4CPLUS可以将日志输出到屏幕、文件甚至是远程服务器,通过策略对日志进行定期备份等。
LOG4CPLUS使用的基本步骤为:
(1)实例化封装了输出介质的appender对象。
(2)实例化封装了输出格式的layout对象。
(3)将layout对象绑定到appender对象(默认绑定到logger)。
(4)实例化封住了日志输出的logger对象,并调用器静态函数getInstance()获取一个logger实例。
(5)将appender对象绑定到logger对象。