msn机器人程序的设计与实现.docx

上传人:牧羊曲112 文档编号:1663602 上传时间:2022-12-13 格式:DOCX 页数:36 大小:464.25KB
返回 下载 相关 举报
msn机器人程序的设计与实现.docx_第1页
第1页 / 共36页
msn机器人程序的设计与实现.docx_第2页
第2页 / 共36页
msn机器人程序的设计与实现.docx_第3页
第3页 / 共36页
msn机器人程序的设计与实现.docx_第4页
第4页 / 共36页
msn机器人程序的设计与实现.docx_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《msn机器人程序的设计与实现.docx》由会员分享,可在线阅读,更多相关《msn机器人程序的设计与实现.docx(36页珍藏版)》请在三一办公上搜索。

1、本 科 生 毕 业 论 文(设 计)中文题目: MSN机器人程序的设计与实现 外文题目: The Design and Implementation of MSN Robot Program 摘 要随着网络的兴起,越来越多的人依赖网络,因此聊天机器人应运而生。聊天机器人是以联系人的形式出现的,只要你添加相关机器人的账号,就可以像与真人聊天一样与机器人聊天,并可查询地图、股票、天气预报、电视节目等信息。目前,知名的聊天机器人有:一枝独秀的MSN机器人小i、专业的MSN股票机器人牛牛,国内则如腾讯的QQ机器人小Q,但在功能上和MSN的系列机器人相比有一定差距。本文详细分析了MSN的通信协议与工作流

2、程,并根据分析MSN登录、消息发送与接收流程,设计和实现了简单的MSN客户端程序。该客户端允许在一台电脑上同时登录多个MSN账号,并能与多个MSN用户进行聊天。同时,本文还充分研究了聊天机器人的工作原理,并设计和实现了MSN聊天机器人系统。关键字:聊天机器人;MSN;聊天软件Abstract With the rise of networks, more and more people rely on the network, so the chat robot appeared. Chat robot based on the form of friends, if you have add

3、ed the robots account, you can chat with the robot just like a real person, and can also query maps, stocks, weather, television programs and other information.This document fully studies the MSN Messenger protocol, and uses its landing principles and message send principles to design and achieve a

4、MSN client. The client can login a number of account at the same time in one computer, and start chatting with different friend. At the same time, this document also fully studied the operation principle of the chat robot, and design and achieves the MSN chat robot system based on the MSN client.Key

5、words: Chat Robot; MSN; Chat Software目 录第一章 绪论11.1 研究背景11.2 MSN机器人的发展现状11.3 本文工作2第二章 MSN协议分析32.1 MSN登录过程32.2 即时消息发送接收过程112.3 MSN 连接保持方法15第三章 MSN机器人系统设计173.1 系统结构173.2 系统方案选取183.3 系统难点及相应解决方案183.4 软件结构18第四章 MSN机器人系统实现214.1 系统实现部分214.2 系统测试26第五章 总结与展望295.1 全文总结295.2 工作展望29参考文献30致 谢31第一章 绪论1.1 研究背景自从上世

6、纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能,人们越来越离不开计算机了。如今,作为网络应用之一的聊天工具,越来越受到人们的欢迎和重视。现在已有的聊天软件不胜枚举,流行的主要有MSN Messenger、QQ等。MSN Messenger来自于软件巨头微软,其实力当然不容小觑。目前最新版本为MSN9,能够实现文本、手写、语音、视频等多种沟通方式,可以预见在不久的将来,聊天软件将成为人们通过因特网相互联系和娱乐的主要平台。由于MSN Messenger协议是公开的,因此第三方软件开发者能通过协议写出

7、自己的程序与网络交互,于是MSN机器人应运而生。MSN机器人是以MSN联系人的形式出现的,只要你添加相关机器人的MSN帐号,就可以像与真人聊天一样与机器人聊天,并可查询地图、股票、天气预报、电视节目等信息。1.2 MSN机器人的发展现状MSN机器人是一项能够带给用户良好信息体验的技术产品基于人工智能技术的开发、研究和应用,为成千上万用户提供新颖实用的网络服务。MSN机器人技术日渐成熟,其中著名的如赢思软件公司开发的小I机器人。2004年赢思先后在全球知名的即时通讯(IM)平台MSN、“腾讯QQ”及Yahoo Messenger上推出了小I智能机器人;小I以其强大的聊天功能和各类资讯信息的提供一

8、时间成为各大IM平台的新宠,用户量突破800万,在人工智能机器人及信息服务领域获得了前所未有的突破。2006年2月,凭借在机器人领域多年的积累以及强大的技术实力,赢思软件成为微软全球战略合作伙伴及微软官方机器人平台,携手微软打造最强大的机器人应用平台。目前公司已推出小I聊天、MSN群、小I地图、小I天气、小I收视指南、小I问答等多项应用,提供了多种个性化功能和服务,性能稳定,应用广泛。1.3 本文工作本文将重点分析MSN Messenger协议里的登陆过程和消息发送部分,并用其设计并制作一款MSN客户端,然后在此基础上完成对MSN机器人系统的设计和实现,以达到研究聊天机器人运作原理的目的。具体

9、的章节安排如下:第一章 研究背景及当前技术的发展状况第二章 MSN协议分析第三章 MSN机器人系统设计第四章 MSN机器人系统实现第五章 总结与展望第二章 MSN协议分析2.1 MSN登录过程1TCP连接到(207.46.104.20)上的1863端口,发送如下指令:VER 1 MSNP9 MSNP8 CVR0rn服务器返回:VER 1 MSNP9 MSNP8 CVR0rnVER命令是用来和服务器协商MSN客户端所使用的版本信息,其中1代表TrID是命令序号,后面是所支持协议的版本,必须以CVR0结尾。2客户端发送CVR命令到服务器声明客户端环境:CVR 2 0x0804 winnt 5.0

10、i386 MSNMSGR 6.0.0602 MSMSGS yxu68rnCVR 命令有一个TrID和另外8个参数。第一个参数是客户端语言的Local ID,简体中文为0x0804,美国英语为0x0409,台湾为0x0404,日本为0x0411,韩国为0x0412;第二个参数为操作系统类型,winnt代表NT系列,Win代表win9x系列;第三个参数为操作系统版本号,5.0表示Windows 2000,5.1 表示Windows XP,4.10表示Windows 98;第四个参数为计算机体系结构,i386 表示Intel 386以上机型;第五个参数为客户端名称,MSNMSGR表示MSN Mess

11、enger客户端;第六个参数表示客户端版本号,当前为6.0.0602;第七个参数必须为MSMSGS;第八个参数为登录名(邮件地址)。服务器返回:CVR 2 6.0.0602 6.0.0602 6.0.0268 服务器也返回CVR但是它只有6个参数。第一个参数为TrID;第二个参数为推荐您使用的客户端版本号,如果为1.0.0000,表示您的客户端信息不可识别;第三个参数和第二个参数相同;第四个参数表示前一版本的版本号;第五个参数为下载推荐版本的URL地址;第六个参数为获取推荐客户端信息的URL地址。3客户端发送USR命令说明身份:USR 3 TWN I yxu68rnUSR命令有4个参数,第一个

12、参数为TrID;第二个参数为身份验证的系统代号,以前可以使用MD5,现在必须使用TWN;第三个参数必须是字母I,表示身份验证开始;第四个参数是要登录服务器的帐号名称。服务器返回XFR命令:XFR 3 NS 207.46.106.72:1863 0 207.46.104.20:1863rnXFR命令有5个参数,第一个参数为TrID;第二个参数为NS表示转移到一个notification服务器;第三个参数为notification服务器的IP地址和端口(以冒号间隔,一般是1863但不绝对);第四个参数在MSNP2以后都必须是0;第五个参数为当前连接的服务器IP和端口。4关闭连接,客户端终止到的连接

13、。说明:MSNP8 MSNP9中不再使用MD5的作身份验证的方式,MD5的方式只在MSNP7及前面的版本中实现,MSNP8、MSN9需要以新的方式执行也就是使用USR 3 TWN I yxu68rn命令。5客户端连接到上面给定的notification服务器指定端口(207.46.106.72:1863),首先按照上面的发送一些命令如下:客户端发送:VER 4 MSNP9 MSNP8 CVR0rn服务器返回:VER 4 MSNP9 MSNP8 CVR0rn客户端发送:CVR 5 0x0804 winnt 5.0 i386 MSNMSGR 6.0.0602 MSMSGS yxu68rn服务器返回

14、:CVR 5 6.0.0602 6.0.0602 6.0.0268 客户端发送:USR 6 TWN I yxu68rn在此服务器不回复XFR命令,而是回复USR命令。USR 6 TWN S lc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2Ecom,ct=1065400856,kpp=1,kv=5,ver=2.1.0173.1,tpf=15920bfbfabbe0badb47790dc51a54farn回应的usr命令前两个参数个发送的usr命令相同,第三个参数使用字母S代替I表示后面开始身份验证过程,其中ct tpf是变化的

15、,其他不变。6使用SSL协议连接到或其它服务器的443端口。登录名后缀为、的客户端使用:443;登录名后缀为的使用:443;其他使用:443。建议使用如下方法确定身份验证服务器:SSL连接到 443端口,发送如下命令:GET /rdr/pprdr.asp HTTP/1.0rnrn服务器将回应如下:HTTP/1.1 200 OKrnServer: Microsoft-IIS/5.0rnDate: Sun, 27 Sep 2003 11:57:47 GMTrnConnection: closernPassportURLs:DARealm=Passport.Net,DALogin=Content-L

16、ength: 0rnContent-Type: text/htmlrnCache-control: privaternrn获取回应中的PassportURLs字段中DALogin部分(斜体部分),即可得到身份验证地址,注意该连接实际上需要在前面加上https:/,表示要使用HTTP SSL协议获取相关信息。是需要连接的服务器,用SSL连接到该服务器443端口,即可进行下面的操作。7在SSL连接中发送如下HTTP请求:GET /login2.srf HTTP/1.1rnAuthorization:Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessen

17、ger%2Emsn%2Ecom,sign-in=yxu68,pwd=*,lc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2Ecom,ct=1065400856,kpp=1,kv=5,ver=2.1.0173.1,tpf=15920bfbfabbe0badb47790dc51a54farnUser-Agent: MSMSGSrnHost: rnConnection: Keep-AlivernCache-Control: no-cachernAuthorization后面跟内容中的“sign-in=”后面为登录的登录名称,“pwd

18、=”后面为登录名对应的密码,其后内容(斜体部分)为前面服务器返回的usr命令后面部分内容。如果成功服务器将返回如下信息:HTTP/1.1 200 OKrnServer: Microsoft-IIS/5.0rn.Authentication-Info:Passport1.4da-status=success,tname=MSPAuth,tname=MSPProf,tname=MSPSec,from-PP=t=,ru=rnContent-Length: 0rnrnrn其中最重要的是Authentication-Info字段返回的值,取得“from-pp=”后面单引号中的部分内容(上面斜体下划线部分

19、)。如果失败服务器返回如下信息(如果失败需要连接其他服务器尝试): HTTP/1.1 401 UnauthorizedrnServer: Microsoft-IIS/5.0rnDate: Sun, 27 Sep 2003 11:58:15 GMTrnPPServer: H: LAWPPIIS6B077rnConnection: closernContent-Type: text/htmlrnExpires: Mon, 20 Oct 2003 07:57:14 GMTrnCache-Control: no-cacherncachecontrol: no-storernPragma: no-cac

20、hernP3P: CP=DSP CUR OTPi IND OTRi ONL FINrnPassportConfig: ConfigVersion=11rnWWW-Authenticate: Passport1.4da-status=failed,srealm=Passport.NET,ts=-3,prompt,cburl=Content-Length: 390rnrn同时服务器有可能将客户端重定向到其他地方,这是将返回如下信息:HTTP/1.1 302 FoundrnServer: Microsoft-IIS/5.0rnDate: Sun, 27 Sep 2003 11:58:32 GMTrn

21、PPServer: H: LAWPPLOG5C006rnConnection: closernContent-Type: text/htmlrnExpires: Sun, 27 Sep 2003 11:57:32 GMTrnCache-Control: no-cacherncachecontrol: no-storernPragma: no-cachernP3P: CP=DSP CUR OTPi IND OTRi ONL FINrnAuthentication-Info: Passport1.4 da-status=redirrnLocation: rn其中8关闭SSL连接,回到notific

22、ation服务器连接上,向服务器再次发送usr命令:USR 7 TWN St=5OyHvVtsqDmntb4B4z*UOKIkjWzyERUzYHRnO7bmd*!4LS4w!JLRB95JjopamqbRz1APVAq*hqeYScQIt*Se2lyA$&p=5ArrhL7LNEzouoqpC9kIoeqvBm4wzKnISD3QzZOxOIcz6iJ5w33IQJZ3tQjq9*4z*l6MQ6y6xYtth7QdEQb*Z1kRHUH6Pm6sJsUXfbfNbrhdu5oOJzdIjNXGVSC5FfheoGrHtrxMp1ZgMgeDcLY0yx6iYoO!0EfXlpQ24avzK

23、IQDA7ME7pLMFTKtVp5NJHdBI75Szr3P4d37Y$命令含义和前面一样,注意的是第三个参数为S,第四个参数就是上面SSL连接中获取的Authentication-Info字段中from-pp部分。如果密码正确notification服务器将返回usr命令,ok作为第二个参数。USR 7 OK yxu68 302240345276220346263263 1 0rn其中第三个参数是用户登录名;第四个参数是用户的昵称(UTF-8值);第五个代表身份验证是否通过,1表示true;第六个如果是MSNP7以上为0,其他为1。其他将返回一些错误。9同步本地联系人列表客户端向服务器发送

24、本地保存的联系人列表版本号:SYN 8 0rn第二个参数就是当前的联系人列表的版本号,0表示本地没有任何联系人的信息。服务器回应客户端服务器上联系人列表的版本号:SYN 8 1056 68 5rn第二个参数是服务器上当前联系人列表的版本号,如果客户端的版本号和服务器上的版本号相同,则没有后面的两个参数;第三个参数为期望的LST命令个数;第四个参数为期望的LSG命令个数。10取得在线人员名单,发送上线通知。客户端向服务器发送如下命令取得在线人员名单:CHG 9 NLN 268435492 rnCHG命令第二个参数为NLN时是取得在线人员名单,并通知他们客户上线了;第三个参数为一个数值串,目前不明

25、白其作用,但是版本不同,其值不同。简体中文MSN Messager 6.0.0602Win2000下是268435492,英文版是268435508,繁体中文268435500。用途更改用户在线状态,具体请参考更改用户状态。以上完成所有登录过程。2.2 即时消息发送接收过程1. 客户端分别完成登录过程以后,由会话发起方(本例中为yxu68)向其Notification服务器发送XFR命令:XFR 12 SBrnXFR作用是向Notification服务器获取Switchboard服务器IP地址和端口号。第一个参数是TrID,第二个参数是Switchboard的缩写SB。注意和登录过程中的XFR

26、命令中的区别,登录过程是NS,代表是Notification服务器。XFR 12 SB 207.46.108.79:1863 CKI 17334300.1065769901.10583rnNotification服务器(207.46.106.22)回复XFR命令如下:服务器回复的XFR命令第一个参数是TrID;第二个参数是SB;第三个参数是Switchboard服务器的IP地址和端口号(用冒号间隔),一般端口号都是1863,但是不绝对;第四个参数是认证的方式,目前使用CKI;第五个参数客户端将要发送的Switchboard服务器的认证字符串,需要保留。如果没有初始化客户端的状态或者状态为HDN

27、,这个服务器将不返回XFR命令,而是返回913错误913 12rn。2客户端保持到Notification服务器的连接,同时连接到上面提供的Switchboard服务器(207.46.108.79)指定端口上,发送如下命令:USR 1 yxu68 17334300.1065769901.10583rnUSR命令第一个参数是TrID,注意这里的TrID是Switchboard服务器上重新设置的一个TrID,又是从1开始,小于4294967295 (232 - 1)的整数,故而这里需要在添加一个计数器,同时即时再次连接其他的Switchboard 服务器,这个计数器也需要保持(不从1开始计数,接着

28、上次开始计数);第二个参数是客户端的登录用户名;第三个参数是上面Notification服务器服务器返回XFR命令中的认证字符串。Switchboard服务器(207.46.108.79)返回如下命令:USR 1 OK yxu68 302240345276220346263263rn该USR命令最后一个参数是客户端的昵称。3客户端向Switchboard服务器(207.46.108.79)发送如下命令:CAL 2 taogxrnCAL命令第一个参数为Switchboard服务器上的TrID;第二个参数为客户端(yxu68)想交流的联系人对象的登录名称。被邀请的联系人(taogx)的Notifi

29、cation服务器(207.46.107.34)向taogx发出如下命令:RNG 17334300 207.46.108.79:1863 CKI 1065769901.21116 yxu68 302240345276220346263263rnRNG命令第一个参数是本次会话的SessionID,需要保存后面的命令将多次用到该参数;第二个命令是本次会话的Switchboard服务器IP 地址和端口;第三个参数是身份验证类型,目前为CKI;第四个参数是身份验证的认证字符串;第五个是参数是对话发起者的登录名称;第六个参数是对话发起者的昵称。客户端taogx连接Switchboard服务器(207.4

30、6.108.79)发送ANS命令:ANS 1 taogx 1065769901.21116 17334300rnANS命令第一个参数是客户端taogx的Switchboard服务器TrID;第二个参数是客户端登录名称;第三个参数是上面RNG命令给出的身份认证字符串;第四个参数是会话SessionID。Switchboard服务器(207.46.108.79)向客户端taogx返回如下命令:IRO 1 1 1 yxu68 302240345276220346263263rnIRO命令第一个参数为TrID和ANS命令第一个参数一样;第二个参数和第三个参数分别为本次会话中去掉自身以外的联系人序号和联

31、系人总数。Switchboard服务器(207.46.108.79)向客户端yxu68返回如下命令:JOI taogx ddrn4消息的发送和接收客户端yxu68向Switchboard服务器(207.46.108.79)发送MSG命令发送消息:MSG 7 N 165rnMIME-Version: 1.0rnContent-Type: text/plain; charset=UTF-8rnX-MMS-IM-Format: FN=%E5%AE%8B%E4%BD%93; EF=; CO=0; CS=86; PF=0rnrnMSG命令第一个参数是TrID(SB 服务器的);第二个参数是指示MSG命令

32、的类型,发送消息时,该参数将置为N;第三个参数为消息的大小,这个值从跟在其后的rn后面开始计算,这个rn后面都为消息内容。Switchboard服务器(207.46.108.79)向客户端taogx发送MSG 命令通知该客户端有人发送消息给该客户端:MSG yxu68 302240345276220346263263 165rnMIME-Version: 1.0rnContent-Type: text/plain; charset=UTF-8rnX-MMS-IM-Format:FN=%E5%AE%8B%E4%BD%93; EF=; CO=0; CS=86; PF=0rnrn该MSG命令第一个参

33、数是发送消息的联系人登录名称,第二个参数是该联系人的昵称,第三个参数值后面的消息长度。后面的消息内容和结构和发送方发送的内容一样。5退出会话任何一方向Switchboard服务器(207.46.108.79)发出OUT指令,即可退出会话:OUTrn这时Switchboard服务器(207.46.108.79)会向其他客户端发送BYE指令:BYE taogxrnBYE 命令只有一个参数,就是退出会话的联系人登录名。只有当会话中的联系人都向Switchboard服务器发送OUT指令,Switchboard服务器才会终止会话。6用户正在输入消息。任何一方向Switchboard服务器(207.46.

34、108.79)发出MSG指令:MSG 30 U 86rnMIME-Version: 1.0rnContent-Type: text/x-msmsgscontrolrnTypingUser: taogxrnrnrn这时Switchboard服务器(207.46.108.79)会向其他客户端(yxu68)发送MSG指令:MSG taogx dd 86rnMIME-Version: 1.0rnContent-Type: text/x-msmsgscontrolrnTypingUser: taogxrnrnrn2.3 MSN 连接保持方法1. 客户端ping Notification服务器的方式客户端

35、发送指令PNG 给Notification服务器:PNGrnNotification服务器回应客户端QNG命令:QNG 40rn2. Notification服务器ping 客户端的方式Notification服务器也会向客户端发送CHL指令查看客户端是否断线,同时验证客户端是否被服务器正确识别。通常称之为challenges,CHL指令可以在状态初始化以后(CHG命令完成以后)直到会话结束任何时候由Notification服务器发出,不必要周期性回复该命令,但是收到服务器该命令后务必在最短时间内回复,而且必须回复每一个CHL命令,如果服务器器在它规定的时间内没有收到回复,它将关闭会话。CHL

36、 0 10050206314474112402rnCHL指令有两个参数,第一个参数一定是0,第二个参数是20位的数字串,不可预料,也不可解释的数字串,但是客户端应该保存它,在回复这个命令中要用到这个数字串。客户端回复QRY指令,说明客户端一切正常。QRY 1049 PROD0061VRRZH4F 32rn78db65629780912ce9c11c0b1c343b3bQRY指令第一个参数是TrID,第二个参数是本次回复中使用的challenges字符串,第三个参数是后面的回复的有效长度,目前一定是32,因为后面的回复是一个经过md5算法处理hash 串。第三个参数后面紧跟着回车换行(0x0D

37、0xOA),回车换行后面紧跟着一个32 位的字符串,即md5值,其计算方法是:取得服务器CHL命令中的20位数值串(10050206314474112402),将QRY 命令中的challenges字符串附加在其后构成一个字符串(10050206314474112402PROD0061VRRZH4F),计算其MD5值得到一个32位字符串(78db65629780912ce9c11c0b1c343b3b)。当前使用的challenges字符串有PROD0061VRRZH4F、JXQ6JTUOGYVN0M,一般使用PROD0061VRRZH4F。一般为了防止部分数据包丢失,该回复命令将间隔1 秒发

38、送两次。服务将回应该命令成功:QRY 1049rn这样完成服务器和客户端的连接。第三章 MSN机器人系统设计3.1 系统结构系统主要由客户端系统和自动问答系统两部分组成。客户端系统由登陆界面、主MSN界面和私聊界面组成。图3.1给出了客户端的系统结构。系统启动后,由登陆界面开始输入用户名和密码,然后进入到主MSN界面,主MSN界面负责整个程序的运行状态,在这个界面上可以通过打开私聊界面来与多个人聊天。私聊界面界面管理着机器人与用户的对话。 图3.1客户端系统结构自动问答系统由关键字分析及提取、数据库操作和数据库三大部分组成,其中关键字分析及提取为系统的核心。图3.2给出了自动问答部分的系统结构

39、。关键字分析及提取部分负责提取出输入语句包含的关键字,数据库操作部分利用此关键字在数据库里查找相应回答,并随机选取一条返回。图3.2自动问答系统结构3.2 系统方案选取本系统采用MFC的强大功能支持,是一个基于对话框的Windows32应用程序,使用的编程环境是微软公司的Microsoft Visual Studio 6.0。网络部分采用CAsyncSocket编写。CAsyncSocket 类在很低的级别上封装了Windows Sockets API ,该类适合那些对网络通信细节很了解,但希望利用回调的便利通知网络事件的程序员使用。利用CAsyncSocket编制网络程序不但比较灵活而且能够

40、避免直接调用Windows Sockets API函数的繁琐工作。3.3 系统难点及相应解决方案1. 由于客户端系统涉及网络,因此单纯的程序结构不能满足。于是本系统采用消息机制驱动。当底层socket收到数据时,会发送消息通知上层处理,然后再将上层传入的数据发送出去。2. 由于网络的不稳定,因此数据包在传送中的常常会丢失或延时太长,造成了MSN登陆的中断。于是客户端系统设置了时钟回调函数OnTimer(UINT nIDEvent),当发现登陆过程出现中断时,会重启登陆过程,直到登陆成功为止。3. MSN Messenger协议内容繁多且更新很快,因此在程序设计上必须能方便的进行扩展。于是客户端

41、系统采用Engine函数来处理所有收到的数据并根据协议内容控制程序的运行。4. 由于存在多人同时与机器人对话的情况,因此必须有多个对话实例存在,而多个实例的管理是个难题。于是本系统使用了容器类vector来管理。5. 由于MSN Messenger协议里即时消息发送存在两种方式,即主叫与被叫,因此必须对两种方式都要考虑到。于是聊天部分采用了两套Engine函数。3.4 软件结构CZxDlg为程序入口点,由它生成CMSN,再由CMSN产生CMSNChat。图3.3给出了系统的软件结构。图3.3软件结构1. CZxDlg概述:程序入口点,也是登陆界面。功能:获得用户输入的用户名密码,并以此初始化CMSN,并启动CMSN界面。2. CMSN概述:主MSN界面,系统的核心部分。功能:由输入的用户名密码完成整个登陆过程,当用户点击某个好友时,生成CMSNChat界面负责与其的聊天过程。内部结构:图3.4给出了CMSN的内部结构。图3.4 CMSN内部结构结构概述:CMSNSocket为CAsyncSocket的派生类,负责接收和发送数据;当接到数据时,会发送消息通知上层OnReceive函数,然后将得到的数据交由Engine函数处理

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号