现在的位置: 首页 > 综合 > 正文

局域网聊天系统__7.客户端调试与总结

2012年11月30日 ⁄ 综合 ⁄ 共 924字 ⁄ 字号 评论关闭
     调试遇到的问题不多,主要还是涉及到的一些指针问题,最主要的就是在构造函数中对指针成员的初始化问题,如果提供了自定义的构造函数,就容易忘记默认构造函数的初始化,以为默认构造函数自己不去掉用就不会有效,给调试带来了一些麻烦。

     客户端整体来说不难,只要理清楚了哪些类负责完成什么任务,需要维护一些什么数据,就好办了。
     这里的主对话框类主要负责维护界面,和服务器交互,以及在必要条件下创建聊天窗口(如有离线消息,有用户连接请求,用户主动聊天等)。
     而聊天对话框则只负责和指定用户进行数据交互,需要维护两边用户信息以及一个聊天套接字。在收到或发送消息时,它还需要维护自身聊天窗口的更新。由于CSocket内置多线程  所以整个工程都并未涉及到多线程。适用于少量用户的局域网
     至于其他一些小功能,如保存聊天记录(客户端),保存用户信息(服务器),以及最小化时生成托盘图标等等。都与主要逻辑无关,都可以随时单独地加上即可。
     本实例缺点很多:
     最主要的就是用户每次上下线都需要服务器更新用户列表后将整个用户列表发送给用户,而用户收到之后需要复制整个列表并删除之前的列表再刷新整个窗口才能完成某用户的一次上下线头像更新。该缺点的改进方法是在聊天包中加入一个类型,如USERUPDATE 每次用户上线或下线服务器则发送该消息包,并指明需要更新用户状态的用户信息,而客户端在收到之后,对应更新即可。
     还有就是前面提到的聊天对话框的关闭问题,该问题在前面已经商讨了解决方案。
     再其次就是安全性和完善性,用户注册并没有提供足够的资料,以及用户信息只是简单的写入文件,服务器甚至没有安全性验证。考虑到这些与通信主体关系不大,因此都不够完善。
     
     到此整个局域网聊天也就有了大概框架以及简单功能实现,大部分代码和思想都来自于参考书籍,逐步加上自己的理解,完成了这系列的开发流程的总结。总的来说,收益很多,特别是在总结的过程中,同学有一句话,据说是爱因斯坦的:"如果你不能简单说清楚,说明你还没有完全明白"。
完整源代码下载地址点击这里http://download.csdn.net/detail/wudaijun/4911762
【上篇】
【下篇】

抱歉!评论已关闭.