MSN机器人登录的一些问题
浏览:2262次 出处信息
最近帮朋友弄一个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天十大热文
-
[65] memory prefetch浅析
-
[53] 转载:cassandra读写性能原理分析
-
[49] 深入浅出cassandra 4 数据一致性问
-
[42] 字符引用和空白字符
-
[40] 获取Dom元素的X/Y坐标
-
[39] MySQL半同步存在的问题
-
[39] 基本排序算法的PHP实现
-
[39] JS中如何判断字符串类型的数字
-
[38] 《web前端最佳实践》—高维护性css
-
[37] javascript插入样式