应该说这个界面跟MSN Messenger是非常类似的。用户可以通过它发送和接收消息等。在启动jMSN的命令行窗口中可以看到jMSN与服务器之间通讯的详细信息。 前面我们主要在介绍jMSN大概的情况,介绍它能完成什么样的功能。下面我们开始来了解怎么利用jMSN自带的API:msnm-lib来实现这些功能。下图是msnm-lib与jMSN包括MSN系统之间的关系,也就是说我们可以通过msnm-lib来完成与MSN服务器之间的通讯而不需要我们去操心具体的通讯协议的细节。事实上msnm-lib给我们做了更多的事情使得我们使用msnm-lib来开发一个MSN应用程序变得非常的简单,这也就是我前面提到的我们完全可以不去可能它所提供的韩文API文档的缘故,因为使用它实在是太简单了。
闽南语说:说破不值钱!闲话说了那么多,现在我们就开始来开发我们自己基于JAVA的跨平台的MSN客户端程序。相信听到这句大家都会觉得血脉膨胀,没错,还有什么比动手写程序更让人兴奋的事情呢?何况还是基于JAVA的、跨平台的! 我们先给出一段可运行的代码来完成一个最简单的功能:当有人把它加入好友时,程序自动将之加入好友,当有人给它发送信息,程序自动回复一条相同的信息。OK,完成这么简单的功能的代码如下:
| /* * Created on 2003-11-21 by Liudong */ package jmsn.demo; import rath.msnm.MSNMessenger; import rath.msnm.SwitchboardSession; import rath.msnm.UserStatus; import rath.msnm.entity.MsnFriend; import rath.msnm.event.MsnAdapter; import rath.msnm.msg.MimeMessage; /** * MSN演示程序 * @author Liudong */ public class MSNDaemon extends Thread { private static MSNMessenger msn; public static void main(String[] args) { msn = new MSNMessenger("youraccount@hotmail.com", "password"); msn.setInitialStatus(UserStatus.ONLINE); msn.addMsnListener(new MSNAdapter(msn)); msn.login(); System.out.println("Waiting for the response...."); //捕捉Ctrl+C的输入以便注销MSN的登录 Runtime.getRuntime().addShutdownHook(new MSNDaemon()); } /** * 用户中止程序执行 */ public void run() { msn.logout(); System.out.println("MSN Logout OK"); } } /** * MSN消息事件处理类 * @author Liudong */ |
|