技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> MSN机器人登录的一些问题

MSN机器人登录的一些问题

浏览:2177次  出处信息

最近帮朋友弄一个MSN机器人,碰到MSN机器人在线状态不显示的问题,百般搜索无果,自已动手分析协议解决问题。

按照协议上来说,当登录成功,以返回:

USR {id} OK {user} {verify} 0

后服务器会发送一条

 SBS 0 null

在接到这条消息后,机器人发送昵称的修改和个性签名设置的消息,以及更改在线状态:

 PRP {id} MFN {nick}
 CHG {id} NLN {clientid} {msnobj}
 UUX {id} {len}
<Data><PSM>.....

而在实际的过程中,MSN服务器不是每次都会返回SBS 0 null这段,导致机器人没法上线,实际上机器人已经在线,只是没有发送更改状态的消息到MSN服务器而已。经常性在收到消息就无下文了:

MSG Hotmail Hotmail 1250
MIME-Version: 1.0
Content-Type: text/x-msmsgsprofile; charset=UTF-8
LoginTime: 1248175528
EmailEnabled: 1
MemberIdHigh: 409600
MemberIdLow: -1481207106
lang_preference: 2052
preferredEmail: 
country: CN
PostalCode: 
Gender: 
Kid: 0
Age: 
BDayPre: 
Birthday: 
Wallet: 
Flags: 1073742915
sid: 72652
....

针对这个问题只需要重新构造上述的消息发送到聊天服务器即可。

当MSN人数超过一定数量后,即使发送了上述消息后,也不会主动设置你的在线状态,此时需要通过MSN的ADL指令来设置在线状态,这个时候需要自己构造ADL消息发送到MSN服务器来通讯好友你的在线状态,注意ADL消息中的数据段的最大长度为7500,如果超过这个长度需要分段来发送。

我使用的是这个MSN CLASS:http://code.google.com/p/phpmsnclass/ 目前需要做上述的修改后才能正常使用。

建议继续学习:

  1. msn2011完美去广告方案    (阅读:2446)
  2. MSN 8.5去除广告栏和共享文件夹    (阅读:1856)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1