现在的位置: 首页 > 综合 > 正文

jml实现msn操作

2013年10月25日 ⁄ 综合 ⁄ 共 5014字 ⁄ 字号 评论关闭

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);

抱歉!评论已关闭.