Chinaunix首页 | 论坛 | 博客
  • 博客访问: 659691
  • 博文数量: 78
  • 博客积分: 4990
  • 博客等级: 上校
  • 技术积分: 1386
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-13 19:25
文章分类

全部博文(78)

文章存档

2010年(6)

2009年(25)

2008年(47)

我的朋友

分类: Java

2008-09-02 18:54:37

基本对于JMSN的类库有所明白了。不过还是要感谢这位韩国朋友。
msn的通讯协议,还是比较容易理解的。是最具有参考价值的了。欧就整理一下:
1 JMSN lib中,abstractprocessor是负责网络协议通讯的抽象基类,同时继承了thread(运行的时候,是一个单独的线程)。那是自然的喽,同服务器对话的过程应该是一个异步的过程。
notificationprocessor,switchboardsession分别继承了abstractprocessor,同时提供了抽象方法init的实现。它们分别对应MSN协议中,notification server(DS),switchboard(SS)的通讯的实现。
2 Callback类,就是为了实现网络通讯中1问1答的处理,作者使用了回调技术。注意,在msn通讯中,发送消息和接受消息没有必然的先后关系,因此,这两个处理程序必须要异步。JMSN LIB的OutMessage,IncomingMessage和Callback就是为了解决这个问题。OutMessage存储了消息的组成部分,另外存放了回调的处理函数(针对这个消息,服务器回答消息由哪个函数来处理)。服务器回答的消息,通过IncommingMessage来解析(分解成一个个元素,存放在数组中)。IncommingMessage应用了factory模式(欧前几天刚学到的,就马上班门弄斧了)。
3 TWIN,MD5为了认证过程中,数据信息处理准备的,感觉就不用仔细看了,标准算法。
4 MSNMessenger类和Adapter类是为了提供给大家应用程序调用而设计提供的。通过事件触发,朋友上线,接收到消息,登陆,登出等等,你再写自己的处理代码。

总结,调用JMSN LIB的话,每个MSNMessager实例都会启动一个Processor线程,接受和发送消息都是通过这一个线程来做的。因此,感觉上这里可以有很大改进的余地(只是从程序处理流程上做到了发送和接收消息是异步的)。我感觉这样应该更合理一些,存在接受线程(一个)和发送线程(n个)。接下去,就是好好地修改这个lib。
阅读(727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~