msn机器人程序的设计与实现_第1页
msn机器人程序的设计与实现_第2页
msn机器人程序的设计与实现_第3页
msn机器人程序的设计与实现_第4页
msn机器人程序的设计与实现_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本 科 生 毕 业 论 文(设 计)中文题目: MMSN机器人人程序的设计与实现 外文题目: TThe Deesign and IImplemmentattion oof MSNN Robot Progrram 摘 要随着网络的兴起起,越来越多多的人依赖网网络,因此聊聊天机器人应应运而生。聊聊天机器人是是以联系人的的形式出现的的,只要你添添加相关机器器人的账号,就可以以像与真人聊聊天一样与机机器人聊天,并并可查询地图图、股票、天天气预报、电电视节目等信信息。目前,知名的聊天机机器人有:一枝独秀的的MSN机器器人小i、专专业的MSNN股票机器人人牛牛,国内内则如 HYPERLINK / 腾讯的Q

2、Q机机器人小Q,但但在功能上和和MSN的系系列机器人相相比有一定差差距。本文详细分析了了MSN的通信信协议与工作流流程,并根据分析MMSN登录、消消息发送与接接收流程,设设计和实现了了简单的MSNN客户端程序序。该客户端端允许在一台电电脑上同时登登录多个MSSN账号,并并能与多个MSNN用户进行聊聊天。同时,本文还充分研研究了聊天机机器人的工作作原理,并设计和实现现了MSN聊聊天机器人系系统。关键字:聊天机机器人;MSN;聊天软件Abstracct With tthe riise off netwworks, moree and more peoplle relly on the nnetwo

3、rrk, soo the chhat roobot aappearred. Chat robott baseed on the fform oof friiends, if yyou have addded thee roboots accoount, you caan chaat witth thee roboot jusst likke a rreal ppersonn, andd can alsso queery maaps, sstockss, weaather, teleevisioon proogramss and otherr infoormatiion.This doocume

4、nnt fullyy studdies the MSN MMessennger pprotoccol, and usses its llandinng priinciplles annd messsage send pprinciiples to dessign aand acchievee a MSSN cliient. The cclientt can loginn a nuumber of acccountt at tthe saame tiime inn one compuuter, and startt chattting with diffeerent friennd. Att t

5、he same time, thiss docuument also fullyy studdied tthe opperatiion prrincipple off the chat robott, andd desiign annd achhievess the MMSN chhat roobot ssystemm baseed on the MMSN cllient.Keywordds: Chat Robot; MSN; Chat Softwaare目 录TOC o 1-2 h z u HYPERLINK l _Toc231720124 第一章 绪论 PAGEREF _Toc231720

6、124 h 1 HYPERLINK l _Toc231720125 1.1 研究背背景 PAGEREF _Toc231720125 h 1 HYPERLINK l _Toc231720126 1.2 MSNN机器人的发发展现状 PAGEREF _Toc231720126 h 1 HYPERLINK l _Toc231720127 1.3 本文工工作 PAGEREF _Toc231720127 h 2 HYPERLINK l _Toc231720128 第二章 MSNN协议分析 PAGEREF _Toc231720128 h 3 HYPERLINK l _Toc231720129 2.1 MSS

7、N登录过程程 PAGEREF _Toc231720129 h 3 HYPERLINK l _Toc231720130 2.2 即时时消息发送接接收过程 PAGEREF _Toc231720130 h 11 HYPERLINK l _Toc231720131 2.3 MSSN 连接保保持方法 PAGEREF _Toc231720131 h 15 HYPERLINK l _Toc231720132 第三章 MSNN机器人系统统设计 PAGEREF _Toc231720132 h 17 HYPERLINK l _Toc231720133 3.1 系统结结构 PAGEREF _Toc231720133

8、 h 17 HYPERLINK l _Toc231720134 3.2 系统方方案选取 PAGEREF _Toc231720134 h 18 HYPERLINK l _Toc231720135 3.3 系统难难点及相应解解决方案 PAGEREF _Toc231720135 h 18 HYPERLINK l _Toc231720136 3.4 软件结结构 PAGEREF _Toc231720136 h 18 HYPERLINK l _Toc231720137 第四章 MSNN机器人系统统实现 PAGEREF _Toc231720137 h 21 HYPERLINK l _Toc231720138

9、 4.1 系统实实现部分 PAGEREF _Toc231720138 h 21 HYPERLINK l _Toc231720139 4.2 系统测测试 PAGEREF _Toc231720139 h 26 HYPERLINK l _Toc231720140 第五章 总结与与展望 PAGEREF _Toc231720140 h 29 HYPERLINK l _Toc231720141 5.1 全文总总结 PAGEREF _Toc231720141 h 29 HYPERLINK l _Toc231720142 5.2 工作展展望 PAGEREF _Toc231720142 h 29 HYPERLI

10、NK l _Toc231720143 参考文献 PAGEREF _Toc231720143 h 300 HYPERLINK l _Toc231720144 致 谢 PAGEREF _Toc231720144 h 311第一章 绪论1.1 研究背背景自从上世纪中叶叶第一台计算算机诞生以来来,计算机越越来越走进人人们的生活当当中,特别是是随着计算机机网络的发展展,把全世界界的人们紧密密的联系在一一起,大大的的扩展了计算算机的功能,人人们越来越离离不开计算机机了。如今,作作为网络应用用之一的聊天天工具,越来来越受到人们们的欢迎和重重视。现在已已有的聊天软软件不胜枚举举,流行的主主要有MSNN Mes

11、ssengerr、QQ等。MSN Messsengeer来自于软软件巨头微软软,其实力当然然不容小觑。目前最新版版本为MSNN9,能够实现 HYPERLINK javascript:void(0); 文本、手手写、语音、视视频等多种沟沟通方式,可可以预见在不不久的将来,聊聊天软件将成成为人们通过过因特网相互互联系和娱乐乐的主要平台台。由于MSN MMessennger协议议是公开的,因此第三方软软件开发者能能通过协议写出自己的程序序与网络交互互,于是MSN机机器人应运而而生。MSN机器器人是以MSSN联系人的的形式出现的的,只要你添加相关机机器人的MSSN帐号,就就可以像与真真人聊天一样样与机

12、器人聊聊天,并可查查询地图、股股票、天气预预报、电视节节目等信息。1.2 MSNN机器人的发发展现状MSN机器人是是一项能够带带给用户良好好信息体验的的技术产品基于人工工智能技术的的开发、研究究和应用,为为成千上万用用户提供新颖颖实用的网络络服务。MSSN机器人技技术日渐成熟熟,其中著名名的如赢思软软件公司开发发的小I机器人。2004年赢思思先后在全球球知名的即时时通讯(IMM)平台MSNN、“腾讯QQ”及Yahooo Messsengerr上推出了小小I智能机器人人;小I以其强大的的聊天功能和和各类资讯信信息的提供一一时间成为各各大IM平台的新新宠,用户量量突破8000万,在人工工智能机器人

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

14、器器人运作原理理的目的。具具体的章节安安排如下:第一章 研究背背景及当前技技术的发展状状况第二章 MSNN协议分析第三章 MSNN机器人系统统设计第四章 MSNN机器人系统统实现第五章 总结与与展望第二章 MSNN协议分析2.1 MSSN登录过程程1TCP连接接到messsengerr.hotmmail.ccom(20020)上的18633端口,发送送如下指令:VER 1 MMSNP9 MSNP88 CVR00rn服务器返回:VER 1 MMSNP9 MSNP88 CVR00rnVER命令是用用来和服务器器协商MSNN客户端所使使用的版本信信息,其中11代表TrIDD是命令

15、序号号,后面是所所支持协议的的版本,必须须以CVR00结尾。2客户端发送送CVR命令到到服务器声明明客户端环境境:CVR 2 00 x08044 winnnt 5.00 i3866 MSNMMSGR 66.0.06602 MSSMSGS yxu688hotmmail.ccomrnCVR 命令有有一个TrIID和另外8个参数。第第一个参数是是客户端语言言的Locaal ID,简简体中文为00 x08044,美国英语语为0 x04409,台湾湾为0 x04404,日本为0 x00411,韩国为0 x00412;第第二个参数为为操作系统类类型,winnnt代表NT系列,Winn代表win99x系列;

16、第第三个参数为为操作系统版版本号,5.0表示Winddows 22000,5.1 表示示Windoows XPP,4.10表示示Windoows 988;第四个参参数为计算机机体系结构,i386 表示Intel 386以上机型;第五个参数为客户端名称,MSNMSGR表示MSN Messenger客户端;第六个参数表示客户端版本号,当前为6.0.0602;第七个参数必须为MSMSGS;第八个参数为登录名(邮件地址)。服务器返回:CVR 2 66.0.06602 6.0.06002 6.00.02688 http:/downlload/dd/4/f/d4f5660d5-66dc6-44901-bb

17、149-aa5684115561dd7/SettupDl.exe hhttp:/ccnrnn服务器也返回CCVR但是它它只有6个参数。第第一个参数为为TrID;第第二个参数为为推荐您使用用的客户端版版本号,如果果为1.0.0000,表表示您的客户户端信息不可可识别;第三三个参数和第第二个参数相相同;第四个个参数表示前前一版本的版版本号;第五五个参数为下下载推荐版本本的URL地址;第六个参数数为获取推荐荐客户端信息息的URL地址。3客户端发送送USR命令说说明身份:USR 3 TTWN I yxu688hotmmail.ccomrnUSR命令有44个参数,第第一个参数为为TrID;第第二个参数为

18、为身份验证的的系统代号,以以前可以使用用MD5,现在在必须使用TTWN;第三三个参数必须须是字母I,表示身份份验证开始;第四个参数数是要登录服服务器的帐号号名称。服务器返回XFFR命令:XFR 3 NNS 2077.46.1106.722:18633 0 20020:18663rnnXFR命令有55个参数,第第一个参数为为TrID;第第二个参数为为NS表示转移移到一个nootificcationn服务器;第第三个参数为为notifficatiion服务器器的IP地址和端端口(以冒号号间隔,一般般是18633但不绝对);第四个参数数在MSNPP2以后都必必须是0;第五个参参数

19、为当前连连接的服务器器IP和端口。4messeenger.hotmaail.coom关闭连接接,客户端终终止到的连连接。说明:MSNPP8 MSNNP9中不再再使用MD55的作身份验验证的方式,MD5的方式只在MSNP7及前面的版本中实现,MSNP8、MSN9需要以新的方式执行也就是使用USR 3 TWN I yxu68rn命令。5客户端连接接到上面给定定的notiificattion服务务器指定端口口(207.46.1006.72:1863),首首先按照上面面的发送一些些命令如下:客户端发送:VER 4 MMSNP9 MSNP88 CVR00rn服务器返回:VER 4 MMSNP9 MSNP

20、88 CVR00rn客户端发送:CVR 5 00 x08044 winnnt 5.00 i3866 MSNMMSGR 66.0.06602 MSSMSGS yxu688hotmmail.ccomrn服务器返回:CVR 5 66.0.06602 6.0.06002 6.00.02688 http:/downlload/dd/4/f/d4f5660d5-66dc6-44901-bb149-aa5684115561dd7/SettupDl.exe hhttp:/ccnrnn客户端发送:USR 6 TTWN I yxu688hotmmail.ccomrn在此服务器不回回复XFR命令,而而是回复USSR

21、命令。USR 6 TTWN S lc=10033,idd=507,tw=400,fs=11,ru=hhttp%33A%2F%2Fmesssengeer%2Emmsn%2EEcom,cct=106654008856,kppp=1,kkv=5,vver=2.1.01773.1,ttpf=155920bffbfabbbe0baddb477990dc511a54faarn回应的usr命命令前两个参参数个发送的的usr命令相相同,第三个个参数使用字字母S代替I表示后面开开始身份验证证过程,其中中ct tppf是变化的的,其他不变变。6使用SSLL协议连接到到或其其它服务器的的443端口。登登录 HYPE

22、RLINK mailto:名后缀为为 名后缀为mmsn.coom、comppaq.neet、t的客户端使使用:443;登录名后后缀为的的使用:4443;其他他使用m:443。建议使用如如下方法确定定身份验证服服务器:SSL连接到nnexus.passpport.ccom 4443端口,发发送如下命令令:GET /rddr/pprrdr.assp HTTTP/1.00rnrn服务器将回应如如下:HTTP/1.1 2000 OKrrnServer: Micrrosoftt-IIS/5.0rrnDate: SSun, 227 Sepp 20033 11:557:47 GMTrrnConnecttio

23、n: closeernPassporrtURLss:DAReealm=PPasspoort.Neet,DALLogin=/llogin22.srf,DARegg=httpp:/uixpwwiz.srrf,Proopertiies=htttps:/regiister.passpport.nnet/edditproof.srff,Privvacy=hhttp:/www.passpport.ccom/coonsumeer/priivacyppolicyy.asp,GenerralReddir=htttp:/nexussrdr.ppasspoort.coom/reddir.assp,Hellp=htt

24、tp:/mmemberrserviices.ppasspoort.neet/memmberseervicee.srf,ConfiigVerssion=111rnnContentt-Lenggth: 00rnContentt-Typee: texxt/htmmlrnnCache-ccontrool: prrivateernrn获取回应中的PPasspoortURLLs字段中DALLogin部部分(斜体部部分),即可可得到身份验验证地址,注注意该连接实实际上需要在在前面加上hhttps:/,表示示要使用HTTTP SSSL协议获取取相关信息。是需要连接的服务器,用SSL连接到该服务器443端口,即

25、可进行下面的操作。7在SSL连连接中发送如如下HTTPP请求:GET /loogin2.srf HHTTP/11.1rnAuthoriizatioon:Passsportt1.4 OrgVeerb=GEET,OrggURL=hhttp%33A%2F%2Fmesssengeer%2Emmsn%2EEcom,ssign-iin=yxuu68,pwd=*,lc=11033,iid=5077,tw=440,fs=1,ru=http%3A%2FF%2Fmeessengger%2EEmsn%22Ecom,ct=100654000856,kkpp=1,kv=5,ver=22.1.01173.1,tpf=11

26、5920bbfbfabbbe0baadb477790dc551a54ffarnnUser-Aggent: MSMSGGSrnnHost: llogin.passpport.ccomrnConnecttion: Keep-AliveernCache-CControol: noo-cachhernnAuthoriizatioon后面跟内内容中的“sign-in=”后面为登录录的登录名称称,“pwd=”后面为登录录名对应的密密码,其后内内容(斜体部部分)为前面面服务器返回回的usr命令后后面部分内容容。如果成功服务器器将返回如下下信息:HTTP/1.1 2000 OKrrnServer: Micrr

27、osoftt-IIS/5.0rrn.Authentticatiion-Innfo:Paassporrt1.4dda-staatus=ssuccesss,tnaame=MSSPAuthh,tnamme=MSPPProf,tnamee=MSPSSec,frrom-PPP=t=,ru=http:/rnContentt-Lenggth: 00rnrnrn其中最重要的是是Autheenticaation-Info字字段返回的值值,取得“from-pp=”后面单引号号中的部分内内容(上面斜斜体下划线部部分)。如果失败服务器器返回如下信信息(如果失失败需要连接接其他服务器器尝试): HTTP/1.1 401

28、1 UnauuthoriizedrrnServer: Micrrosoftt-IIS/5.0rrnDate: SSun, 227 Sepp 20033 11:558:15 GMTrrnPPServeer: H: LAWPPPIIS66B077rnConnecttion: closeernContentt-Typee: texxt/htmmlrnnExpiress: Monn, 20 Oct 22003 007:57:14 GMMTrnnCache-CControol: noo-cachhernncachecoontroll: no-storeernPragma: no-ccachernP3P:

29、 CPP=DSPP CUR OTPi IND OOTRi OONL FIINrnPassporrtConffig: CConfiggVersiion=111rnWWW-Autthentiicate: Passsport11.4da-statuus=faiiled,ssrealmm=Passsport.NET,tts=-3,promppt,cbuurl=htttp:/www.ppasspoortimaages.ccom/XPPPasspportLoogo.giif,cbttxt=Tyype%200your%20e-mmail%220addrress%220and%20passswordd%20c

30、oorrecttly.%220If%220you%20havven%E22%80%999t%200regissteredd%20wiith%200.NET%20Passsportt%2C%220clicck%20tthe%200Get%220a%200.NET%20Passsportt%20liink.rrnContentt-Lenggth: 3390rnrn同时服务器有可可能将客户端端重定向到其其他地方,这这是将返回如如下信息:HTTP/1.1 3022 FounndrnnServer: Micrrosoftt-IIS/5.0rrnDate: SSun, 227 Sepp 20033 11:

31、558:32 GMTrrnPPServeer: H: LAWPPPLOG55C006rnConnecttion: closeernContentt-Typee: texxt/htmmlrnnExpiress: Sunn, 27 Sep 22003 111:57:32 GMMTrnnCache-CControol: noo-cachhernncachecoontroll: no-storeernPragma: no-ccachernP3P: CPP=DSPP CUR OTPi IND OOTRi OONL FIINrnAuthentticatiion-Innfo: PPasspoort1.44

32、da-sstatuss=rediirrnnLocatioon: htttps:/logiinnet.passpport.ccom/loogin2.srf?llc=10333rnnrn其中httpss:/loginn2.srff?lc=11033就是是重定向的UURL,这时时需要按照这这一步开始的的方式访问新新的服务器m,用logiin2.srrf?lc=1033替替代logiin2.srrf。8关闭SSLL连接,回到到notifficatiion服务器器连接上,向向服务器再次次发送usrr命令:USR 7 TTWN Stt=5OyHHvVtsqqDmntbb4B4z*UOKIkkjWzyEER

33、UzYHHRnO7bbmd*!44LS4w!JLRB995JjoppamqbRRz1APVVAq*hqqeYScQQIt*See2lyA$&p=55ArrhLL7LNEzzouoqppC9kIooeqvBmm4wzKnnISD3QQzZOxOOIcz6iiJ5w333IQJZ33tQjq99*4z*ll6MQ6yy6xYttth7QdEEQb*Z11kRHUHH6Pm6ssJsUXffbfNbrrhdu5ooOJzdIIjNXGVVSC5FffheoGrrHtrxMMp1ZgMMgeDcLLY0yx66iYoO!0EfXllpQ24aavzKIQQDA7MEE7pLMFFTKtVpp5NJHd

34、dBI75SSzr3P44d37Y$命令含义和前面面一样,注意意的是第三个个参数为S,第四个参参数就是上面面SSL连接中中获取的Auuthentticatiion-Innfo字段中中from-pp部分。如果密码正确nnotifiicatioon服务器将将返回usrr命令,ok作为第二二个参数。USR 7 OOK yxuu68 3022403345277622003462632263 1 0rnn其中第三个参数数是用户登录录名;第四个个参数是用户户的昵称(UUTF-8值值);第五个个代表身份验验证是否通过过,1表示truee;第六个如如果是MSNNP7以上为为0,其他为1。其他将返返回一些错误误

35、。9同步本地联联系人列表客户端向服务器器发送本地保保存的联系人人列表版本号号:SYN 8 00rn第二个参数就是是当前的联系系人列表的版版本号,0表示本地没没有任何联系系人的信息。服务器回应客户户端服务器上上联系人列表表的版本号:SYN 8 11056 668 5rrn第二个参数是服服务器上当前前联系人列表表的版本号,如如果客户端的的版本号和服服务器上的版版本号相同,则则没有后面的的两个参数;第三个参数数为期望的LLST命令个个数;第四个个参数为期望望的LSG命令个个数。10取得在线线人员名单,发发送上线通知知。客户端向服务器器发送如下命命令取得在线线人员名单:CHG 9 NNLN 26684

36、354492 rrnCHG命令第二二个参数为NNLN时是取取得在线人员员名单,并通通知他们客户户上线了;第第三个参数为为一个数值串串,目前不明明白其作用,但但是版本不同同,其值不同同。简体中文文MSN MMessagger 6.0.06002Win20000下是26844354922,英文版是是2684335508,繁繁体中文26684355500。用途途更改用户在在线状态,具具体请参考更更改用户状态态。以上完成所有登登录过程。2.2 即时时消息发送接接收过程1. 客户端分分别完成登录录过程以后,由由会话发起方方(本例中为为yxu688hotmmail.ccom)向其其Notifficatii

37、on服务器器发送XFRR命令:XFR 12 SBrnXFR作用是向向Notifficatiion服务器器获取Swiitchbooard服务务器IP地址和端端口号。第一一个参数是TTrID,第第二个参数是是Switcchboarrd的缩写SB。注意和和登录过程中中的XFR命令中中的区别,登登录过程是NNS,代表是是Notifficatiion服务器器。XFR 12 SB 20079:18663 CKII 173334300.106577699011.105883rnnNotificcationn服务器(20022)回复XFRR命令如下:服务器回复的XXFR

38、命令第第一个参数是是TrID;第第二个参数是是SB;第三个个参数是Swwitchbboard服服务器的IPP地址和端口口号(用冒号号间隔),一一般端口号都都是18633,但是不绝绝对;第四个个参数是认证证的方式,目目前使用CKKI;第五个个参数客户端端将要发送的的Switcchboarrd服务器的的认证字符串串,需要保留留。如果没有有初始化客户户端的状态或或者状态为HHDN,这个个服务器将不不返回XFRR命令,而是是返回9133错误913 12rn。2客户端保持持到Notiificattion服务务器的连接,同同时连接到上上面提供的SSwitchhboardd服务器(200

39、79)指定端端口上,发送送如下命令:USR 1 yyxu68hotmaail.coom 1733343000.106557699001.105583rnUSR命令第一一个参数是TTrID,注注意这里的TTrID是Switcchboarrd服务器上上重新设置的的一个TrIID,又是从从1开始,小于于429499672955 (2332 - 11)的整数,故故而这里需要要在添加一个个计数器,同同时即时再次次连接其他的的Switcchboarrd 服务器器,这个计数数器也需要保保持(不从11开始计数,接接着上次开始始计数);第第二个参数是是客户端的登登录用户名;第三个参数数是上面Nootificca

40、tionn服务器服务务器返回XFFR命令中的的认证字符串串。Switchbboard服服务器(20079)返回如如下命令:USR 1 OOK yxuu68 3022403345277622003462632263rn该USR命令最最后一个参数数是客户端的的昵称。3客户端向SSwitchhboardd服务器(20079)发送如如下命令:CAL 2 ttaogx163.ccomrnCAL命令第一一个参数为SSwitchhboardd服务器上的的TrID;第第二个参数为为客户端(yyxu68hotmaail.coom)想交流流的联系人对对象的登录名名称。被邀请

41、的联系人人()的的Notifficatiion服务器器(207.46.1007.34)向向发出出如下命令:RNG 1733343000 207.46.1008.79:1863 CKI 110657669901.211166 HYPERLINK mailto:yxu68 yxu668 3022403345277622003462632263rnRNG命令第一一个参数是本本次会话的SSessioonID,需需要保存后面面的命令将多多次用到该参参数;第二个个命令是本次次会话的Swwitchbboard服服务器IP 地址和端口口;第三个参参数是身份验验证类型,目目前为CKII;第四个参参数是身份验验证

42、的认证字字符串;第五五个是参数是是对话发起者者的登录名称称;第六个参参数是对话发发起者的昵称称。客户端连连接Swittchboaard服务器器(207.46.1008.79)发发送ANS命令:ANS 1 ttaogx163.ccom 100657699901.221116 173344300rrnANS命令第一一个参数是客客户端m的Switcchboarrd服务器TrIID;第二个个参数是客户户端登录名称称;第三个参参数是上面RRNG命令给给出的身份认认证字符串;第四个参数数是会话SeessionnID。Switchbboard服服务器(20079)向客户户端返返回如下命令

43、令:IRO 1 11 1 yxxu68m 3022240345227622203466263263rrnIRO命令第一一个参数为TTrID和ANS命令第第一个参数一一样;第二个个参数和第三三个参数分别别为本次会话话中去掉自身身以外的联系系人序号和联联系人总数。Switchbboard服服务器(20079)向客户户端yxu668返回回如下命令:JOI m ddrrn4消息的发送送和接收客户端yxu668向Switcchboarrd服务器(20079)发送MSGG命令发送消息息:MSG 7 NN 165rnMIME-Veersionn: 1.00rnCont

44、entt-Typee: texxt/plaain; ccharseet=UTFF-8rnX-MMS-IIM-Forrmat: FN=%EE5%AE%8B%E44%BD%993; EFF=; COO=0; CCS=86; PF=00rnrnMSG命令第一一个参数是TTrID(SB 服务器器的);第二二个参数是指指示MSG命令的的类型,发送送消息时,该该参数将置为为N;第三个参参数为消息的的大小,这个个值从跟在其其后的rn后面开始始计算,这个个rn后面面都为消息内内容。Switchbboard服服务器(20079)向客户户端发发送MSG 命令通知该该客户端有人人发送消息给给该客

45、户端:MSG yxuu68 3022403345277622003462632263 1665rnnMIME-Veersionn: 1.00rnContentt-Typee: texxt/plaain; ccharseet=UTFF-8rnX-MMS-IIM-Forrmat:FFN=%E55%AE%88B%E4%BD%933; EF=; CO=0; CSS=86; PF=0rnrn该MSG命令第第一个参数是是发送消息的的联系人登录录名称,第二二个参数是该该联系人的昵昵称,第三个个参数值后面面的消息长度度。后面的消消息内容和结结构和发送方方发送的内容容一样。5退出会话任何一方向Swwitchbb

46、oard服服务器(20079)发出OUTT指令,即可可退出会话:OUTrnn这时Switcchboarrd服务器(20079)会向其其他客户端发发送BYE指令:BYE mrnBYE 命令只只有一个参数数,就是退出出会话的联系系人登录名。只有当会话中的的联系人都向向Switcchboarrd服务器发发送OUT指令,Swiitchbooard服务务器才会终止止会话。6用户正在输输入消息。任何一方向Swwitchbboard服服务器(20079)发出MSGG指令:MSG 30 U 86rnMIME-Veersionn: 1.00rnCont

47、entt-Typee: texxt/x-mmsmsgsscontrrolrnTypingUUser: rrnrnrn这时Switcchboarrd服务器(20079)会向其他他客户端(yyxu68hotmaail.coom)发送MSGG指令:MSG m dd 886rnnMIME-Veersionn: 1.00rnContentt-Typee: texxt/x-mmsmsgsscontrrolrnTypingUUser: rrnrnrn2.3 MSSN 连接保保持方法客户端pingg Notiificattion服务务器的方式客户端发送指令令PNG 给Notifficati

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

49、。CHL 0 110050220631444741112402rnCHL指令有两两个参数,第第一个参数一一定是0,第二个参参数是20位的数字字串,不可预预料,也不可可解释的数字字串,但是客客户端应该保保存它,在回回复这个命令令中要用到这这个数字串。客户端回复QRRY指令,说说明客户端一一切正常。QRY 10449 PROOD00611VRRZHH4F 332rnn78db66562977809122ce9c111c0b11c343bb3bQRY指令第一一个参数是TTrID,第第二个参数是是本次回复中中使用的chhallennges字符符串,第三个个参数是后面面的回复的有有效长度,目目前一定是3

50、32,因为后后面的回复是是一个经过mmd5算法处处理hashh 串。第三三个参数后面面紧跟着回车车换行(0 xx0D 0 xxOA),回回车换行后面面紧跟着一个个32 位的字字符串,即mmd5值,其其计算方法是是:取得服务器器CHL命令中中的20位数值串串(100550206331447441124002),将QRYY 命令中的的challlengess字符串附加加在其后构成成一个字符串串(100550206331447441124002PRODD0061VVRRZH4F),计计算其MD55值得到一个个32位字符串串(78dbb6562997809112ce9cc11c0bb1c3433b3b

51、)。当当前使用的cchalleenges字字符串有PRROD00661VRRZZH4F、JXQ6JJTUOGGYVN00M,一般使使用PRODD0061VVRRZH4F。一般般为了防止部部分数据包丢丢失,该回复复命令将间隔隔1 秒发送两两次。服务将将回应该命令令成功:QRY 10449rnn这样完成服务器器和客户端的的连接。第三章 MSNN机器人系统统设计3.1 系统结结构系统主要由客户户端系统和自动问问答系统两部分组组成。客户端系统由登登陆界面、主主MSN界面面和私聊界面面组成。图33.1给出了了客户端的系系统结构。系系统启动后,由登登陆界面开始始输入用户名名和密码,然然后进入到主主MSN界

52、面面,主MSN界界面负责整个个程序的运行行状态,在这这个界面上可可以通过打开私聊聊界面来与多个人聊天。私聊聊界面界面管管理着机器人人与用户的对对话。 图3.1客户端端系统结构自动问答系统由由关键字分析析及提取、数数据库操作和和数据库三大大部分组成,其其中关键字分分析及提取为为系统的核心心。图3.22给出了自动动问答部分的的系统结构。关键字分析及提取部分负责提取出输入语句包含的关键字,数据库操作部分利用此关键字在数据库里查找相应回答,并随机选取一条返回。图3.2自动问问答系统结构构3.2 系统方方案选取本系统采用MFFC的强大功功能支持,是一个基于于对话框的Wiindowss32应用程程序,使用

53、的的编程环境是是微软公司的的Microosoft Visuaal Stuudio 66.0。网络络部分采用CCAsynccSockeet编写。CAsyncSSockett 类在很低低的级别上封封装了Winndows Sockeets API ,该该类适合那些些对网络通信信细节很了解解,但希望利利用回调的便便利通知网络络事件的程序序员使用。利利用CAsyncSSockett编制网络程程序不但比较较灵活而且能能够避免直接接调用Winndows Sockeets API函数的的繁琐工作。3.3 系统难难点及相应解解决方案由于客户端系统统涉及网络,因此单纯的程序结构不能满足。于是本系统采用消息机制驱动

54、。当底层socket收到数据时,会发送消息通知上层处理,然后再将上层传入的数据发送出去。由于网络的不稳稳定,因此数数据包在传送送中的常常会会丢失或延时时太长,造成成了MSN登登陆的中断。于于是客户端系系统设置了时时钟回调函数数OnTimmer(UIINT nIIDEvennt),当发发现登陆过程程出现中断时时,会重启登登陆过程,直直到登陆成功功为止。MSN Messsengeer协议内容容繁多且更新新很快,因此此在程序设计计上必须能方方便的进行扩扩展。于是客客户端系统采采用Engiine函数来来处理所有收收到的数据并并根据协议内内容控制程序序的运行。由于存在多人同同时与机器人人对话的情况况,因

55、此必须须有多个对话实例存存在,而多个个实例的管理理是个难题。于于是本系统使使用了容器类类vectoor来管理。由于MSN MMessennger协议议里即时消息息发送存在两两种方式,即即主叫与被叫叫,因此必须须对两种方式式都要考虑到到。于是聊天天部分采用了了两套Enggine函数数。3.4 软件结结构CZxDlg为为程序入口点点,由它生成成CMSN,再再由CMSNN产生CMSSNChatt。图3.33给出了系统统的软件结构构。图3.3软件结结构CZxDlg概述:程序入口口点,也是登登陆界面。功能:获得用户户输入的用户户名密码,并并以此初始化化CMSN,并并启动CMSSN界面。CMSN概述:主M

56、SNN界面,系统的核心心部分。功能:由输入的的用户名密码码完成整个登登陆过程,当用户点击击某个好友时时,生成CMMSNChaat界面负责责与其的聊天天过程。内部结构:图33.4给出了了CMSN的的内部结构。图3.4 CMMSN内部结结构结构概述:CMMSNSoccket为CCAsynccSockeet的派生类类,负责接收收和发送数据据;当接到数数据时,会发发送消息通知知上层OnRReceivve函数,然然后将得到的的数据交由EEnginee函数处理。EEnginee函数通过SSend调用用CMSNSSockett发送数据。每每次发送和接接收数据时都都会通过WrriteSttatus函函数输出状

57、态态信息。CMSNChaat概述:聊天界面面,可以多个个并存。功能:由输入的的用户名密码码完成整个登登陆过程,当当用户点击某某个好友时,生生成CMSNNChat界界面负责与其其的聊天过程程。内部结构:图33.5给出了了CMSNCChat的内内部结构。图3.5 CMMSNChaat内部结构构结构概述:结构构上与CMSSN类似,只只是拥有两个个独立的soocket和和Enginne,因此不不再赘述。第四章 MSNN机器人系统统实现4.1 系统实实现部分4.1.1 CCZxDlgg类概述:登陆界面面。核心代码分析:OnOK()当用户点击登陆陆按钮时,会会执行消息响响应函数OnnOK()。图4.1给出

58、了OnOK的流程图。图4.1 OnnOK流程图图4.1.2 CCMyLisstCtr类类概述:重载CLListCttr类,用于于显示颜色。核心代码分析:OnCustoomDraww(NMHDDR* pNNMHDR, LRESSULT* pResuult)在重载的OnCCustommDraw(NMHDRR* pNMMHDR, LRESUULT* ppResullt)函数里里,添加了着着色代码,这这个函数在每每次listt控件重画时时都会被调用用。图4.22给出了OnnCustoomDraww的流程图。图4.2 OnnCustoomDraww流程图4.1.3 CCMSNSoocket类类概述:重载

59、CAAsyncSSockett类,用于网网络的发送与与接收。核心代码分析:OnConneect(innt nErrrorCoode) 在sockett请求与服务务器建立连接接后,如果成成功系统将通通过事件FDD_CONNNECT调用用虚函数OnnConneect。我们们可以通过重重载OnCoonnectt对已经完成成的建连请求求进行处理。图4.3给出了OnConnect的流程图。图4.3 OnnConneect流程图图OnReceiive(innt nErrrorCoode)当sockett接受到数据据后,系统将将触发FD_READ事事件并调用OOnReceeive虚函函数,我们可可以通过Re

60、eceivee成员函数从从sockeet接收缓冲冲区读取数据据。Sockett接受的数据据将一直保存存在缓冲区中中,直到调用用Receiive成员函函数将其读走走。图4.44给出了OnnReceiive的流程程图。图4.4 OnnReceiive流程图图4.1.4 CCMSN类概述:重载CDDialogg类,用于管管理客户端登登陆过程和发发起会话。核心代码分析:Ini()系统第一次运行行或每次重启启动时,都会会调用Inii()函数。图4.5给出了IIni的流程程图。图4.5 Inni流程图OnReceiiveOK (WPARRAM wpparam,LPARAAM lpaaram)如果连接成功,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论