MSN机器人登录的一些问题
浏览:2156次 出处信息
最近帮朋友弄一个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/ 目前需要做上述的修改后才能正常使用。
建议继续学习:
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:nginx源码分析-共享内存
后一篇:编程珠玑番外篇-G. 程序员心底的小声音 >>
文章信息
- 作者:libing 来源: 记录&分享
- 标签: MSN 机器人
- 发布时间:2009-11-15 19:19:04
建议继续学习
近3天十大热文
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成