文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
Java频道
 资讯动态   考试认证   新手入门   核心技术   高级技术   J2EE   J2ME   XML   开源技术   其他技术
您现在的位置: IT文谷 >> 开发平台 >> Java >> 核心技术 >> 网络编程 >> 文章正文
用Java实现MSN Messenger聊天用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天
用Java实现MSN Messenger聊天
用Java实现MSN Messenger聊天用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天
用Java实现MSN Messenger聊天用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天

 

    应该说这个界面跟MSN Messenger是非常类似的。用户可以通过它发送和接收消息等。在启动jMSN的命令行窗口中可以看到jMSN与服务器之间通讯的详细信息。

    前面我们主要在介绍j MSN大概的情况,介绍它能完成什么样的功能。

   下面我们开始来了解怎么利用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
  */



  class MSNAdapter extends MsnAdapter {

  MSNMessenger messenger;

  
public MSNAdapter(MSNMessenger messenger) {
  this.messenger = messenger;
  }
  /**
  * 某人正在输入信息
  */
  public void progressTyping(
  SwitchboardSession ss,
  MsnFriend friend,
  String typingUser) {
  System.out.println(friend.getLoginName() + "正在输入信息...");
  }
  /**
  * 收到消息的时候执行该方法
  */
  public void instantMessageReceived(
  SwitchboardSession ss,
  MsnFriend friend,
  MimeMessage mime) {
  System.out.print("接收到消息:" + friend.getFriendlyName() + "->");
  System.out.println(mime.getMessage());
  try {
  //发送相同的回复信息给发送者
  messenger.sendMessage(friend.getLoginName(), mime);
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  /**
  * 登录成功后执行该方法
  */
  public void loginComplete(MsnFriend own) {
  System.out.println(own.getLoginName() + " Login OK");
  }
  /**
  * 登录失败后执行该方法
  */
  public void loginError(String header) {
  System.out.println("Login Failed: " + header);
  }
  /**
  * 好友离线时执行该方法
  */
  public void userOffline(String loginName) {
  System.out.println("USER " + loginName + " Logout.");
  }
  /**
  * 好友上线时执行该方法
  */
  public void userOnline(MsnFriend friend) {
  System.out.println("USER "+friend.getFriendlyName()+" Login.");
  }
  /**
  * 有人加我为好友时执行
  */
  public void whoAddedMe(MsnFriend friend) {
  System.out.println("USER " + friend.getLoginName() + " Addme.");
  try {
  messenger.addFriend(friend.getLoginName());
  } catch (Exception e) {
  e.printStackTrace();
  }
  }


  /**
  * 有人把我从好友列表中删除时执行
  */
  public void whoRemovedMe(MsnFriend friend) {
  System.out.println("USER "+friend.getLoginName()+" Remove me.");
  try {
  messenger.removeFriend(friend.getLoginName());
  } catch (Exception e) {
  e.printStackTrace();
  }
  }

  }

 

上一页  [1] [2] [3] 下一页  

上一页  [1] [2] [3] 下一页

用Java实现MSN Messenger聊天用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    我的Thinking in Java学习笔记
    使用JBoss和Eclipse创建J2EE应用
    SpringFramework(9)
    NoTitle385
    向Web Service进军--Axis+Tomcat模拟一个银行存取款
    JAVA中的指针,引用及对象的clone
    JAVA中用动态代理类实现记忆功能(二)
    JAVA中用动态代理类实现记忆功能(一)
    DB Test
    基金系统的初步研究(1)
    SpringFramework(8)
    深入浅出Java clone技术(2)
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    用Java实现MSN Messenger聊天用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天
    用Java实现MSN Messenger聊天用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天2006-7-19 21:19:20用Java实现MSN Messenger聊天

    全站热点
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷论坛
    Tel: 0577-65690019      E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2008 wengu.com 文谷 All Rights Reserved
    浙ICP备05000327号