jml实现msn操作

package  javamsn;

import  java.text.SimpleDateFormat;
import  java.util.Date;
import  net.sf.jml.MsnContact;
import  net.sf.jml.MsnList;
import  net.sf.jml.MsnMessenger;
import  net.sf.jml.MsnProtocol;
import  net.sf.jml.MsnSwitchboard;
import  net.sf.jml.MsnUserStatus;
import  net.sf.jml.event.MsnAdapter;
import  net.sf.jml.impl.MsnContactImpl;
import  net.sf.jml.impl.MsnMessengerFactory;
import  net.sf.jml.message.MsnControlMessage;
import  net.sf.jml.message.MsnDatacastMessage;
import  net.sf.jml.message.MsnInstantMessage;
import  net.sf.jml.message.MsnSystemMessage;
import  net.sf.jml.message.MsnUnknownMessage;

/**
 * 欢迎装载,但请说明出处
 * 
@author  zhappy
 
*/

public   class  msntest  extends  MsnAdapter  {
    
private  MsnMessenger messenger  =   null ;
    
private  String email  =   null ,password  =   null ;
    
    
/**  Creates a new instance of msntest  */
    
public  msntest()  {
    }

    
    
public   static   void  main(String args[])
    
throws  ClassNotFoundException, InstantiationException, IllegalAccessException  {
        msntest msn 
=  (msntest) Class.forName( " javamsn.msntest " ).newInstance(); // 创建类实例
        msn.setEmail( " throbot@msn.com " ); // 设置登录用户
        msn.setPassword( "0 1234567890 " ); // 设置密码
        msn.start();
    }

    
    
// 打印信息
     private   static   void  msg(Object obj)  {
        SimpleDateFormat sdf 
=   new  SimpleDateFormat( " MM-dd HH:mm " );
        
if  (obj  instanceof  Throwable)
            System.err.println(
" [ "   +  sdf.format( new  Date())  +   " "   +  obj);
        
else
            System.out.println(
" [ "   +  sdf.format( new  Date())  +   " "   +  obj);
    }

    
    
private   void  start()  {
        messenger 
=  MsnMessengerFactory.createMsnMessenger(email,password); // 创建MsnMessenger
        messenger.setSupportedProtocol( new  MsnProtocol[]  {MsnProtocol.MSNP12} ); // 设置登录协议
        messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE); // 设置用户状态
        messenger.addListener( this ); // 注册事件
        messenger.login(); // 登录
    }

    
    
// 收到正常信息的时候发生
     public   void  instantMessageReceived(MsnSwitchboard switchboard,
            MsnInstantMessage message, MsnContact contact) 
{
        msg(contact.getDisplayName()
+ " 对我说: " + message.getContent());
        
// 如果聊天内容为exit,退出
         if  (message.getContent().trim().equalsIgnoreCase( " exit " ))  {
            msg(contact.getDisplayName()
+ " 对我发出退出指令。 " );
            messenger.logout();
            System.exit(
0 );
        }

        message.setContent(
" Hello,I'm robot! " ); // 设置要发送消息内容
        message.setFontRGBColor(( int )(Math.random()  *   255   *   255   *   255 )); // 设置消息的文本颜色
        switchboard.sendMessage(message); // 发送信息
    }

    
    
// 收到系统信息的时候发生,登录时
     public   void  systemMessageReceived(MsnMessenger messenger,
            MsnSystemMessage message) 
{
        
// msg(messenger + " recv system message " + message);
    }

    
    
// 当在联系人聊天窗口获得光标并按下第一个键时发生
     public   void  controlMessageReceived(MsnSwitchboard switchboard,
            MsnControlMessage message, MsnContact contact) 
{
        msg(contact.getFriendlyName()
+ " 正在输入文字。 " );
    }

    
    
// 异常时发生
     public   void  exceptionCaught(MsnMessenger messenger, Throwable throwable)  {
        msg(messenger 
+  throwable.toString());
        msg(throwable);
    }

    
    
// 登录完成时发生
     public   void  loginCompleted(MsnMessenger messenger)  {
        msg(messenger.getOwner().getDisplayName()
+ " 登录成功! " );
        
// messenger.getOwner().setDisplayName("天天持之以恒");
    }

    
    
// 注销时发生
     public   void  logout(MsnMessenger messenger)  {
        msg(messenger 
+   "  logout " );
    }

    
    
// 收到系统广播信息时发生
     public   void  datacastMessageReceived(MsnSwitchboard switchboard,
            MsnDatacastMessage message, MsnContact friend) 
{
        msg(switchboard 
+   "  recv datacast message  "   +  message);
        switchboard.sendMessage(message, 
false );
    }

    
    
// 收到目前不能处理的信息时发生
     public   void  unknownMessageReceived(MsnSwitchboard switchboard,
            MsnUnknownMessage message, MsnContact friend) 
{
        
// msg(switchboard + " recv unknown message " + message);
    }

    
    
public   void  contactListInitCompleted(MsnMessenger messenger)  {
        listContacts();
    }

    
    
/**
     * 更新好友列表完成时发生
     
*/

    
public   void  contactListSyncCompleted(MsnMessenger messenger)  {
        listContacts();
    }

    
    
/**
     * 关闭一个聊天窗口时发生
     
*/

    
public   void  switchboardClosed(MsnSwitchboard switchboard)  {
        msg(
" switchboardStarted  "   +  switchboard);
    }

    
    
/**
     * 打开一个聊天窗口时发生
     
*/

    
public   void  switchboardStarted(MsnSwitchboard switchboard)  {
        msg(
" switchboardStarted  "   +  switchboard);
    }

    
    
// 打印联系人
     private   void  listContacts()  {
        MsnContact[] cons 
=  messenger.getContactList().getContactsInList(MsnList.AL);
        
if  (cons.length  ==   0 )
            msg(
" " );
        
else
            msg(
" 你现在有 " + cons.length + " 个联系人 " );
        
for  ( int  i  =   0 ; i  <  cons.length; i ++ {
            String personal 
=  ((MsnContactImpl)cons[i]).getPersonalMessage().equals( "" )
            
?   " "  : ((MsnContactImpl)cons[i]).getPersonalMessage();
            msg(cons[i].getDisplayName() 
+   "   "   +  cons[i].getEmail()  +   "   "
                    
+  cons[i].getStatus()  +   "   "   +  personal);
        }

    }

    
    
public  String getEmail()  {
        
return  email;
    }

    
    
public   void  setEmail(String email)  {
        
this .email  =  email;
    }

    
    
public  String getPassword()  {
        
return  password;
    }

    
    
public   void  setPassword(String password)  {
        
this .password  =  password;
    }

    
}

http://sourceforge.net/project/showfiles.php?group_id=118829&package_id=129414&release_id=617947

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值