zoukankan      html  css  js  c++  java
  • MSN Messenger的用户管理

    原文网址:http://www.blogwind.com/Wuvist/comment.aspx?Article_id=7004

    开始折腾“风中之猪”了……

    “风中之猪”是基于DotMSN的一个MSN机器人。

    DotMSN真是他妈的强大。它把MSN的协议封装得非常非常好。带的Example也是非常实用,让人一看便能够举一反三,做出更多的东西来。

    终于有点了解多线程程序是怎么写的了。

    Well,偶这篇blog不是要说DotMSN或者是“风中之猪”的。我要说的是MSN Messenger。


    MSN其实有四个列表:ForwardList,AllowedList,ReverseList,BlockedList

    我们平时看到的联系人列表其实只是:ForwardList而已。

    当我们看到ForwardList中的联系人上线的时候,MSN服务器便允许我们向这些联系人发送讯息。

    我们平时指的MSN150个好友的上限,便是指这个ForwardList只能够有150个联系人了。

    ReverseList则是表示将我们加为联系人的MSN用户。

    我们添加了某个联系人之后,其实就是将我们添加到了对方的ReverseList当中。我们是无法修改ReverseList这个列表的。这个列表是没有联系人上线的。所以,虽然我们只能够有150人的好友,但是,是可以有无数个人添加我们为好友的。

    AllowedList则是表示可以查看我们的状态以及向我们发送讯息的MSN用户列表。这个列表也是没有上限的。

    所以,有些人即使不在我们的ForwordList/朋友列表里面,他们还是可以给我们发送讯息。

    AllowedList中能够有的又不仅是某个MSN用户,它还可以有“所有其他用户”这个特殊的东西。也就是说,如果我们添加“所有其他用户”的话,所 有的MSN在默认情况下都可以向我们发送讯息。他们不需要将我们加为朋友,不需要把我们加入到他们的ForwardList里面。

    BlockedList则是保存我们“阻止”的MSN用户列表了。一个用户一但被我们放到BlockedList里面,他无论如何都是无法查看我们的状态或者是发送讯息了。同样的这个列表也是可以有“所有其他用户”这个特殊的玩意。


    早期的MSN,“所有其他用户”是默认在AllowedList里面的,所以,我们只要知道对方的MSN帐号,便可以立即向对方发送讯息,如果对方在线的话。

    后来,应该是搞骚扰的人多了,“所有其他用户”默认被放到BlockedList里面了,所以,我们现在一般只能够通过添加对方为自己的联系人才能够与其对话。

    一般情况下,我们添加一个联系人的时候,对方会同时进入我们的ForwardList以及AllowedList里面。

    但是,我们删除已有的联系人,却只是将其从我们的ForwardList里面删除,对方的帐号还是会在我们的AllowedList里面,对方还是可以看到我们的帐号状态,以及跟我们说话。

    除非,我们在删除的时候,同时阻止了对方,也就是说,将对方加入到我们的BlockedList里面。

    这便出现了一个问题……AllowedList似乎会是永远增长的。MSN Messenger并没有提供任何手段让我们修改这个List。只要是在这里面出现过的帐号,要么就永远在AllowedList里面,要么就会被扔到BlockedList里面。

    BlockedList里面名单也是没有办法消除了。

    我是说,只要我们曾经添加过某个联系人。那么他的帐号便似乎永远都会在这四个列表里面。

    很奇怪很奇怪。


    事实上,还是可以直接修改这ForwardList/AllowedList/BlockedList三个列表中的名单的。只是,我们无法直接通过MSN Messenger来做这个操作而已;至少,MSN Messenger 6.2不行。

    微软似乎也从来没有想要让普通用户知道ReverseList/AllowedList/BlockedList这三个列表的存在。

    还有其他一些奇妙的事情。

    如果A在B的ForwardList里面,也就是说A是B的联系人、是B的朋友、B想要跟A说话。

    但是B并不在A的AllowedList里面。那么B是无法即时查看A的状态的。

    如果“所有其他用户”是在A的AllowedList里面的话,那么,B是可以直接跟A说话的。

    也就是说,可以出现跟“不在线”的MSN联系人对话的情况。

    呼呼……刚刚忘了截屏了,真是遗憾。


    我再继续说清楚一些……

    其实,所谓的“所有其他用户”并不是一个特殊的MSN用户,而是一个MSN隐私设定而已。

    所谓的AllowedList,虽然决定了我们ReverseList中的人是否能够查看我们的状态以及向我们发送讯息;但是,它其实只是决定他们能否查看我们的状态而已。

    别人不是不能够向我们发送讯息,而是如果他们不在我们AllowedList里面的话,他们不能够确定我们是否在线,既然他们不知道我们是否在线,他们便不能够通过普通的方式向我们发送讯息了。

    同样的,如果他们不在我们的AllowedList跟ForwardList里面,我们也是没法通过普通方式跟对方发送讯息。

    并且,在这样的情况下,别人要给我们发送讯息,要比我们给他们发送讯息简单。

    是的,没有错。前者比后者简单。至于简单、复杂在哪些地方,偶这里就先不说了;因为,我自己也不是很确定。

    否则,我们便可以通过无限制的AllowedList跟ReversedList来突破ForwardList的150个人的限制了。

    很奇妙的……MSN背后的协议是很复杂的……且不论它的技术实现,光这四个List的设定便是很耐人寻味了……



    仔细想想,微软搞这么四个List,是有它的道理的……奇妙的MSN……

    呼呼……也许,我有心情的话,会继续写blog来说“风中之猪”以及DotMSN的使用。

    到目前为止,似乎国内还是没有人介绍如何调用DotMSN。国外的,我没有Google。

    不知道QQ、ICQ等又是怎么处理用户列表的……
  • 相关阅读:
    IIS 浏览aspx页面出现无法显示XML页的解决方法分享
    好看的导航菜单
    C# FileUpload使用过程遇到的问题
    javascript之数组操作
    浅谈.NET下的多线程
    项目分页通用页
    npoi
    react webpack.config.js的配置及注释
    JS 解析Json 方法
    json解析
  • 原文地址:https://www.cnblogs.com/wuvist/p/104616.html
Copyright © 2011-2022 走看看