自制即时通信系统:socket网络编程(总结)

前面的章节介绍了大致的实现构架与代码,本节就我实际编写过程中的感受做一个小小的总结吧:
一开始选择这个课题并未对socket编程这一块有过多的了解,由于暑假期间还要实习,时间并不充裕,从开始学习到课题完成总共有一个半月左右;

 

我的学习历程:
C语言的socket编程:
花了一两周时间把书上的示例差不多都敲打了一遍甚至数遍,才算有了一个大概的认识,认为可以走下一步了;
MFC编程:
因为之前都是用的C,而要用户界面要用MFC编程,虽然之前学过C++但也只是了解一些基本特性,因此又花了一周时间看完学习教材和示例后,觉得可以真正着手编程了;

 

开始编程:
其实我一开始是从客户端编程的,从登陆对话框开始,记得当时很多小问题都得查阅书籍或是百度:比如IP控件的值转换,CString类型的编辑等,其中较为深刻的是类之间的函数访问问题,所以我把登陆后的三个子窗口(好友窗口,个人信息窗口,查询窗口)都设为属性页,而属性表不仅储存这三个属性页的对象指针,还存放了客户端的服务器套接字,以便之后的访问;不过把登陆功能做好后,就必须需要服务器提供支持了,记得当时成功的调试出客户端与服务器的通讯交互后,心中就一个感受:前人诚不欺我也;
虽然搭建了一个简陋的服务器,而且此刻我也并未链接数据库,为了方便起见都是模拟数据库操作的;


接下来继续客户端的编写,其中有几个关键点:
1.信息包的编码设置:因为涉及到的信息包类型有不低于二十个,对每一个信息包的编码还是很重要的,不仅需要尽量的满足扩充性,通过编码还能体现信息包之间的关系;
2.几个关键的结构体:
好友信息结构体:存放了每个好友的详细信息资料,根据登陆成功时接收到的好友列表进行初始化;
好友结构体:存放了好友列表与陌生人列表的好友ID与对应的树形列表控件项目,主要用来管理添加或删除好友;
聊天窗口结构体:管理聊天窗口,当有好友信息到来时,先检索该结构体中是否已创建了对应的聊天窗口,如果没有则创建新的聊天窗口并更新该结构体;

 

至于服务器的编程,个人认为最费时间的是数据库的搭建,而线程用例的编程虽然也费时间,但不会在一个问题上卡太久,而且在有了最基础的构架后,逐渐添加内容还是很有效率的;

 

至于调试,也是个麻烦事,因为系统的各功能在穿插执行的时候还真有可能出问题,而且需要大量的实验,虽然最了解程序的人是编写者自己,但总感觉这种事还是有个专门的调试人员好,怪不得研发公司都有专门的程序测试员;

 

在当初做完这个系统,心里还是有小小喜悦的,不过时隔一月有余,加上最近有看了《深入浅出MFC》这本书,发现以前还真是井底之蛙,编程只会对着向导不断的click,一些内部运转机理是十分模糊或完全不知道的,又加上最近找工作的压力,越发能感受到自己的不足,不过对于自己的学习能力,还是相当有信心的,看得书越多,越发觉找工作的兴趣不是那么浓厚了,而且找工作本身也是浪费时间的一件事;

 

总得来说,笔者做这个课题的目的主要是只是为了学习,在创新上面没什么亮点,所以也不能算为登堂之作,不过能记录下这些点点滴滴,聊以自慰倒也是一种欣慰罢。

 

最后,希望自己能不断的知其所以然,不断进步!

你可能感兴趣的:(网络编程,VC,即时通信,Sockets)