智能制造机器人程序的设计与实现 精品.docx
- 文档编号:16206524
- 上传时间:2023-07-11
- 格式:DOCX
- 页数:29
- 大小:319.23KB
智能制造机器人程序的设计与实现 精品.docx
《智能制造机器人程序的设计与实现 精品.docx》由会员分享,可在线阅读,更多相关《智能制造机器人程序的设计与实现 精品.docx(29页珍藏版)》请在冰点文库上搜索。
智能制造机器人程序的设计与实现精品
本科生毕业论文(设计)
中文题目:
MSN机器人程序的设计与实现
外文题目:
TheDesignandImplementationofMSNRobotProgram
摘要
随着网络的兴起,越来越多的人依赖网络,因此聊天机器人应运而生。
聊天机器人是以联系人的形式出现的,只要你添加相关机器人的账号,就可以像与真人聊天一样与机器人聊天,并可查询地图、股票、天气预报、电视节目等信息。
目前,知名的聊天机器人有:
一枝独秀的MSN机器人小i、专业的MSN股票机器人牛牛,国内则如腾讯的QQ机器人小Q,但在功能上和MSN的系列机器人相比有一定差距。
本文详细分析了MSN的通信协议与工作流程,并根据分析MSN登录、消息发送与接收流程,设计和实现了简单的MSN客户端程序。
该客户端允许在一台电脑上同时登录多个MSN账号,并能与多个MSN用户进行聊天。
同时,本文还充分研究了聊天机器人的工作原理,并设计和实现了MSN聊天机器人系统。
关键字:
聊天机器人;MSN;聊天软件
Abstract
Withtheriseofnetworks,moreandmorepeoplerelyonthenetwork,sothechatrobotappeared.Chatrobotbasedontheformoffriends,ifyouhaveaddedtherobot’saccount,youcanchatwiththerobotjustlikearealperson,andcanalsoquerymaps,stocks,weather,televisionprogramsandotherinformation.
ThisdocumentfullystudiestheMSNMessengerprotocol,andusesitslandingprinciplesandmessagesendprinciplestodesignandachieveaMSNclient.Theclientcanloginanumberofaccountatthesametimeinoneputer,andstartchattingwithdifferentfriend.Atthesametime,thisdocumentalsofullystudiedtheoperationprincipleofthechatrobot,anddesignandachievestheMSNchatrobotsystembasedontheMSNclient.
Keywords:
ChatRobot;MSN;ChatSoftware
第一章绪论
1.1研究背景
自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能,人们越来越离不开计算机了。
如今,作为网络应用之一的聊天工具,越来越受到人们的欢迎和重视。
现在已有的聊天软件不胜枚举,流行的主要有MSNMessenger、QQ等。
MSNMessenger来自于软件巨头微软,其实力当然不容小觑。
目前最新版本为MSN9,能够实现文本、手写、语音、视频等多种沟通方式,可以预见在不久的将来,聊天软件将成为人们通过因特网相互联系和娱乐的主要平台。
由于MSNMessenger协议是公开的,因此第三方软件开发者能通过协议写出自己的程序与网络交互,于是MSN机器人应运而生。
MSN机器人是以MSN联系人的形式出现的,只要你添加相关机器人的MSN帐号,就可以像与真人聊天一样与机器人聊天,并可查询地图、股票、天气预报、电视节目等信息。
1.2MSN机器人的发展现状
MSN机器人是一项能够带给用户良好信息体验的技术产品――基于人工智能技术的开发、研究和应用,为成千上万用户提供新颖实用的网络服务。
MSN机器人技术日渐成熟,其中著名的如赢思软件公司开发的小I机器人。
20XX年赢思先后在全球知名的即时通讯(IM)平台MSN、“腾讯QQ”及YahooMessenger上推出了小I智能机器人;小I以其强大的聊天功能和各类资讯信息的提供一时间成为各大IM平台的新宠,用户量突破800万,在人工智能机器人及信息服务领域获得了前所未有的突破。
20XX年2月,凭借在机器人领域多年的积累以及强大的技术实力,赢思软件成为微软全球战略合作伙伴及微软官方机器人平台,携手微软打造最强大的机器人应用平台。
目前公司已推出小I聊天、MSN群、小I地图、小I天气、小I收视指南、小I问答等多项应用,提供了多种个性化功能和服务,性能稳定,应用广泛。
1.3本文工作
本文将重点分析MSNMessenger协议里的登陆过程和消息发送部分,并用其设计并制作一款MSN客户端,然后在此基础上完成对MSN机器人系统的设计和实现,以达到研究聊天机器人运作原理的目的。
具体的章节安排如下:
第一章研究背景及当前技术的发展状况
第二章MSN协议分析
第三章MSN机器人系统设计
第四章MSN机器人系统实现
第五章总结与展望
第二章MSN协议分析
2.1MSN登录过程
1.TCP连接到messenger.hotmail.(207.46.104.20)上的1863端口,发送如下指令:
VER1MSNP9MSNP8CVR0\r\n
服务器返回:
VER1MSNP9MSNP8CVR0\r\n
VER命令是用来和服务器协商MSN客户端所使用的版本信息,其中1代表TrID是命令序号,后面是所支持协议的版本,必须以CVR0结尾。
2.客户端发送CVR命令到服务器声明客户端环境:
CVR20x0804winnt5.0i386MSNMSGR6.0.0602MSMSGSyxu68@hotmail.\r\n
CVR命令有一个TrID和另外8个参数。
第一个参数是客户端语言的LocalID,简体中文为0x0804,美国英语为0x0409,台湾为0x0404,日本为0x0411,韩国为0x0412;第二个参数为操作系统类型,winnt代表NT系列,Win代表win9x系列;第三个参数为操作系统版本号,5.0表示Windows2000,5.1表示WindowsXP,4.10表示Windows98;第四个参数为计算机体系结构,i386表示Intel386以上机型;第五个参数为客户端名称,MSNMSGR表示MSNMessenger客户端;第六个参数表示客户端版本号,当前为6.0.0602;第七个参数必须为MSMSGS;第八个参数为登录名(邮件地址)。
服务器返回:
CVR26.0.06026.0.06026.0.0268http:
//download.microsoft./download/d/4/f/d4f560d5-6dc6-4901-b149-a568415561d7/SetupDl.exehttp:
//messenger.msn./\r\n
服务器也返回CVR但是它只有6个参数。
第一个参数为TrID;第二个参数为推荐您使用的客户端版本号,如果为1.0.0000,表示您的客户端信息不可识别;第三个参数和第二个参数相同;第四个参数表示前一版本的版本号;第五个参数为下载推荐版本的URL地址;第六个参数为获取推荐客户端信息的URL地址。
3.客户端发送USR命令说明身份:
USR3TWNIyxu68@hotmail.\r\n
USR命令有4个参数,第一个参数为TrID;第二个参数为身份验证的系统代号,以前可以使用MD5,现在必须使用TWN;第三个参数必须是字母I,表示身份验证开始;第四个参数是要登录服务器的帐号名称。
服务器返回XFR命令:
XFR3NS207.46.106.72:
18630207.46.104.20:
1863\r\n
XFR命令有5个参数,第一个参数为TrID;第二个参数为NS表示转移到一个notification服务器;第三个参数为notification服务器的IP地址和端口(以冒号间隔,一般是1863但不绝对);第四个参数在MSNP2以后都必须是0;第五个参数为当前连接的服务器IP和端口。
4.messenger.hotmail.关闭连接,客户端终止到messenger.hotmail.的连接。
说明:
MSNP8MSNP9中不再使用MD5的作身份验证的方式,MD5的方式只在MSNP7及前面的版本中实现,MSNP8、MSN9需要以新的方式执行也就是使用USR3TWNIyxu68@hotmail.\r\n命令。
5.客户端连接到上面给定的notification服务器指定端口(207.46.106.72:
1863),首先按照上面的发送一些命令如下:
客户端发送:
VER4MSNP9MSNP8CVR0\r\n
服务器返回:
VER4MSNP9MSNP8CVR0\r\n
客户端发送:
CVR50x0804winnt5.0i386MSNMSGR6.0.0602MSMSGSyxu68@hotmail.\r\n
服务器返回:
CVR56.0.06026.0.06026.0.0268http:
//download.microsoft./download/d/4/f/d4f560d5-6dc6-4901-b149-a568415561d7/SetupDl.exehttp:
//messenger.msn./\r\n
客户端发送:
USR6TWNIyxu68@hotmail.\r\n
在此服务器不回复XFR命令,而是回复USR命令。
USR6TWNSlc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2E,ct=1065400856,kpp=1,kv=5,ver=2.1.0173.1,tpf=15920bfbfabbe0badb47790dc51a54fa\r\n
回应的usr命令前两个参数个发送的usr命令相同,第三个参数使用字母S代替I表示后面开始身份验证过程,其中cttpf是变化的,其他不变。
6.使用SSL协议连接到login.passport.或其它服务器的443端口。
登录名后缀为@msn.、@、@的客户端使用msnialogin.passport.:
443;登录名后缀为@hotmail.的使用loginnet.passport.:
443;其他使用login.passport.:
443。
建议使用如下方法确定身份验证服务器:
SSL连接到nexus.passport.443端口,发送如下命令:
GET/rdr/pprdr.aspHTTP/1.0\r\n
\r\n
服务器将回应如下:
HTTP/1.1200OK\r\n
Server:
Microsoft-IIS/5.0\r\n
Date:
Sun,27Sep20XX11:
57:
47GMT\r\n
Connection:
close\r\n
PassportURLs:
DARealm=Passport.Net,DALogin=login.passport./login2.srf,DAReg=
Content-Length:
0\r\n
Content-Type:
text/html\r\n
Cache-control:
private\r\n
\r\n
获取回应中的PassportURLs字段中DALogin部分(斜体部分),即可得到身份验证地址,注意该连接实际上需要在前面加上https:
//,表示要使用HTTPSSL协议获取相关信息。
login.passport.是需要连接的服务器,用SSL连接到该服务器443端口,即可进行下面的操作。
7.在SSL连接中发送如下HTTP请求:
GET/login2.srfHTTP/1.1\r\n
Authorization:
Passport1.4OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2E,sign-in=yxu68@hotmail.,pwd=******,lc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2E,ct=1065400856,kpp=1,kv=5,ver=2.1.0173.1,tpf=15920bfbfabbe0badb47790dc51a54fa\r\n
User-Agent:
MSMSGS\r\n
Host:
login.passport.\r\n
Connection:
Keep-Alive\r\n
Cache-Control:
no-cache\r\n
Authorization后面跟内容中的“sign-in=”后面为登录的登录名称,“pwd=”后面为登录名对应的密码,其后内容(斜体部分)为前面服务器返回的usr命令后面部分内容。
如果成功服务器将返回如下信息:
HTTP/1.1200OK\r\n
Server:
Microsoft-IIS/5.0\r\n
…..
Authentication-Info:
Passport1.4da-status=success,tname=MSPAuth,tname=MSPProf,tname=MSPSec,from-PP='t=…',ru=http:
//messenger.msn.\r\n
Content-Length:
0\r\n
\r\n
\r\n
其中最重要的是Authentication-Info字段返回的值,取得“from-pp=”后面单引号中的部分内容(上面斜体下划线部分)。
如果失败服务器返回如下信息(如果失败需要连接其他服务器尝试):
HTTP/1.1401Unauthorized\r\n
Server:
Microsoft-IIS/5.0\r\n
Date:
Sun,27Sep20XX11:
58:
15GMT\r\n
PPServer:
H:
LAWPPIIS6B077\r\n
Connection:
close\r\n
Content-Type:
text/html\r\n
Expires:
Mon,20Oct20XX07:
57:
14GMT\r\n
Cache-Control:
no-cache\r\n
cachecontrol:
no-store\r\n
Pragma:
no-cache\r\n
P3P:
CP="DSPCUROTPiINDOTRiONLFIN"\r\n
PassportConfig:
ConfigVersion=11\r\n
-Authenticate:
Passport1.4da-status=failed,srealm=Passport.NET,ts=-3,prompt,cburl=http:
//.passportimages./XPPassportLogo.gif,cbtxt=Type%20your%20e-mail%20address%20and%20password%20correctly.%20If%20you%20haven%E2%80%99t%20registered%20with%20.NET%20Passport%2C%20click%20the%20Get%20a%20.NET%20Passport%20link.\r\n
Content-Length:
390\r\n
\r\n
同时服务器有可能将客户端重定向到其他地方,这是将返回如下信息:
HTTP/1.1302Found\r\n
Server:
Microsoft-IIS/5.0\r\n
Date:
Sun,27Sep20XX11:
58:
32GMT\r\n
PPServer:
H:
LAWPPLOG5C006\r\n
Connection:
close\r\n
Content-Type:
text/html\r\n
Expires:
Sun,27Sep20XX11:
57:
32GMT\r\n
Cache-Control:
no-cache\r\n
cachecontrol:
no-store\r\n
Pragma:
no-cache\r\n
P3P:
CP="DSPCUROTPiINDOTRiONLFIN"\r\n
Authentication-Info:
Passport1.4da-status=redir\r\n
Location:
https:
//loginnet.passport./login2.srf?
lc=1033\r\n
\r\n
其中https:
//loginnet.passport./login2.srf?
lc=1033就是重定向的URL,这时需要按照这一步开始的方式访问新的服务器loginnet.passport.,用login2.srf?
lc=1033替代login2.srf。
8.关闭SSL连接,回到notification服务器连接上,向服务器再次发送usr命令:
USR7TWNSt=5OyHvVtsqDmntb4B4z*UOKIkjWzyERUzYHRnO7bmd*!
4LS4w!
JLRB95JjopamqbRz1APVAq*hqeYScQIt*Se2lyA$$&p=5ArrhL7LNEzouoqpC9kIoeqvBm4wzKnISD3QzZOxOIcz6iJ5w33IQJZ3tQjq9*4z*l6MQ6y6xYtth7QdEQb*Z1kRHUH6Pm6sJsUXfbfNbrhdu5oOJzdIjNXGVSC5FfheoGrHtrxMp1ZgMgeDcLY0yx6iYoO!
0EfXlpQ24avzKIQDA7ME7pLMFTKtVp5NJHdBI75Szr3P4d37Y$
命令含义和前面一样,注意的是第三个参数为S,第四个参数就是上面SSL连接中获取的Authentication-Info字段中from-pp部分。
如果密码正确notification服务器将返回usr命令,ok作为第二个参数。
USR7OKyxu68@hotmail.\302\240\345\276\220\346\263\26310\r\n
其中第三个参数是用户登录名;第四个参数是用户的昵称(UTF-8值);第五个代表身份验证是否通过,1表示true;第六个如果是MSNP7以上为0,其他为1。
其他将返回一些错误。
9.同步本地联系人列表
客户端向服务器发送本地保存的联系人列表版本号:
SYN80\r\n
第二个参数就是当前的联系人列表的版本号,0表示本地没有任何联系人的信息。
服务器回应客户端服务器上联系人列表的版本号:
SYN81056685\r\n
第二个参数是服务器上当前联系人列表的版本号,如果客户端的版本号和服务器上的版本号相同,则没有后面的两个参数;第三个参数为期望的LST命令个数;第四个参数为期望的LSG命令个数。
10.取得在线人员名单,发送上线通知。
客户端向服务器发送如下命令取得在线人员名单:
CHG9NLN268435492\r\n
CHG命令第二个参数为NLN时是取得在线人员名单,并通知他们客户上线了;第三个参数为一个数值串,目前不明白其作用,但是版本不同,其值不同。
简体中文MSNMessager6.0.0602+Win2000下是268435492,英文版是268435508,繁体中文268435500。
用途更改用户在线状态,具体请参考更改用户状态。
以上完成所有登录过程。
2.2即时消息发送接收过程
1.客户端分别完成登录过程以后,由会话发起方(本例中为yxu68@hotmail.)向其Notification服务器发送XFR命令:
XFR12SB\r\n
XFR作用是向Notification服务器获取Switchboard服务器IP地址和端口号。
第一个参数是TrID,第二个参数是Switchboard的缩写SB。
注意和登录过程中的XFR命令中的区别,登录过程是NS,代表是Notification服务器。
XFR12SB207.46.108.79:
1863CKI17334300.1065769901.10583\r\n
Notification服务器(207.46.106.22)回复XFR命令如下:
服务器回复的XFR命令第一个参数是TrID;第二个参数是SB;第三个参数是Switchboard服务器的IP地址和端口号(用冒号间隔),一般端口号都是1863,但是不绝对;第四个参数是认证的方式,目前使用CKI;第五个参数客户端将要发送的Switchboard服务器的认证字符串,需要保留。
如果没有初始化客户端的状态或者状态为HDN,这个服务器将不返回XFR命令,而是返回913错误91312\r\n。
2.客户端保持到Notification服务器的连接,同时连接到上面提供的Switchboard服务器(207.46.108.79)指定端口上,发送如下命令:
USR1yxu68@hotmail.17334300.1065769901.10583\r\n
USR命令第一个参数是TrID,注意这里的TrID是Switchboard服务器上重新设置的一个TrID,又是从1开始,小于4294967295(2^32-1)的整数,故而这里需要在添加一个计数器,同时即时再次连接其他的Switchboard服务器,这个计数器也需要保持(不从1开始计数,接着上次开始计数);第二个参数是客户端的登录用户名;第三个参数是上面Notification服务器服务器返回XFR命令中的认证字符串。
Switchboard服务器(207.46.108.79)返回如下命令:
USR1OKyxu68@hotmail.\302\240\345\276\220\346\263\263\r\n
该USR命令最后一个参数是客户端的昵称。
3.客户端向Switchboard服务器(207.46.108.79)发送如下命令:
CAL2taogx@163.\r\n
CAL命令第一个参数为Switchboard服务器上的TrID;第二个参数为客户端(yxu68@hotmail.)想交流的联系人对象的登录名称。
被邀请的联系人(taogx@163.)的Notification服务器(207.46.107.34)向taogx@163.发出如下命令
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能制造机器人程序的设计与实现 精品 智能 制造 机器人 程序 设计 实现