📄 msnserver.java
字号:
package jm.form.msn;
import jm.form.msn.config.JMMRConfigConstants;
import jm.form.msn.util.Logger;
import jm.form.msn.util.Manager;
import net.sf.jml.MsnContact;
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.event.MsnContactListAdapter;
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;
/**
* MSN服务程序
* 梦界家园MSNP12
* @author ISHome
* @since 0.1
* @version 0.5.0.2.1
*/
public class MSNServer implements JMMRConfigConstants{
private String email;
private String password;
private MsnMessenger messenger;
private Manager manager;
private Logger logger;
public MSNServer(Manager manager) {
this.manager = manager;
this.email = this.manager.getConfigMap().get(CONFIG_USERNAME);
this.password = this.manager.getConfigMap().get(CONFIG_PASSWORD);
this.logger = manager.getLogger();
}
private MSNServer(String email, String password) {
this.email = email;
this.password = password;
}
public void start() {
messenger = MsnMessengerFactory.createMsnMessenger(email, password);
messenger.setSupportedProtocol(new MsnProtocol[] { MsnProtocol.MSNP12 });
messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);
messenger.setLogIncoming(true);
messenger.setLogOutgoing(true);
messenger.addListener(new MSNListener());
messenger.login();
messenger.addContactListListener(new MsnContactListAdapter() {
public void contactStatusChanged(MsnMessenger msn, MsnContact con) {
manager.getLogger().debug(con.getDisplayName());
manager.getLogger().debug(con.getPersonalMessage());
manager.getLogger().debug(((MsnContactImpl) con).getCurrentMedia());
}
public void contactListInitCompleted(MsnMessenger messenger) {
listContacts();
}
});
// try {
// Thread.sleep(10000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// messenger.logout();
// messenger.login();
// messenger.getOwner().setDisplayName("Blah");
// messenger.getOwner().getDisplayName();
}
public void stop(){
messenger.logout();
}
private void listContacts() {
MsnContact[] cons = messenger.getContactList().getContacts();
for (MsnContact con : cons) {
manager.getLogger().debug(con.getDisplayName());
manager.getLogger().debug(con.getEmail());
manager.getLogger().debug(con.getStatus());
manager.getLogger().debug(con.getPersonalMessage());
}
}
public static void main(String[] args) throws Exception {
//new MSNServer("ishometest@live.cn", "123456789").start();
new MSNServer("is_home_test@hotmail.com", "123456789").start();
}
/////////////////////////////////////////////////////////////////
/**
* MSN事件监听
* 梦界家园MSNP15
* @author ISHome
* @since 0.5
* @version 0.5.0.2.1
*/
public class MSNListener extends MsnAdapter {
public void exceptionCaught(MsnMessenger messenger, Throwable throwable) {
logger.error(messenger + throwable.toString(), throwable);
}
/**
* 登录
* @param messenger
*/
public void loginCompleted(MsnMessenger messenger) {
logger.info(messenger + " login complete ");
manager.getMainForm().setServerStaters(SERVER_STATE_RUN);
}
/**
* 退出
* @param messenger
*/
public void logout(MsnMessenger messenger) {
logger.info(messenger + " logout");
manager.getMainForm().setServerStaters(SERVER_STATE_STOP);
}
/**
* 在线信息
*/
public void instantMessageReceived(MsnSwitchboard switchboard, MsnInstantMessage message, MsnContact friend) {
logger.info(switchboard + " recv instant message " + message);
switchboard.sendMessage(message, false);
}
/**
* 系统信息
*/
public void systemMessageReceived(MsnMessenger messenger, MsnSystemMessage message) {
logger.info(messenger + " recv system message " + message);
}
/**
* 控制信息
*/
public void controlMessageReceived(MsnSwitchboard switchboard, MsnControlMessage message, MsnContact contact) {
logger.info(switchboard + " recv control message from " + contact.getEmail());
switchboard.sendMessage(message, false);
}
/**
* 离线消息
*/
public void datacastMessageReceived(MsnSwitchboard switchboard, MsnDatacastMessage message, MsnContact friend) {
logger.info(switchboard + " recv datacast message " + message);
switchboard.sendMessage(message, false);
}
/**
* 未知处理
*/
public void unknownMessageReceived(MsnSwitchboard switchboard, MsnUnknownMessage message, MsnContact friend) {
logger.info(switchboard + " recv unknown message " + message);
}
/**
* 下载好友结束
*/
public void contactListInitCompleted(MsnMessenger messenger) {
logger.info(messenger + " contact list init completeted");
}
/**
* 同步好友
*/
public void contactListSyncCompleted(MsnMessenger messenger) {
logger.info(messenger + " contact list sync completed");
}
/**
* 好友状态
*/
public void contactStatusChanged(MsnMessenger messenger, MsnContact friend) {
logger.info(messenger + " friend " + friend.getEmail() + " status changed from " + friend.getOldStatus() + " to " + friend.getStatus());
}
/**
* 登录用户状态
*/
public void ownerStatusChanged(MsnMessenger messenger) {
logger.info(messenger + " status changed from " + messenger.getOwner().getOldStatus() + " to " + messenger.getOwner().getStatus());
}
/**
* 被人添加时候的处理
*/
public void contactAddedMe(MsnMessenger messenger, MsnContact friend) {
messenger.addFriend(friend.getEmail(), friend.getFriendlyName());
messenger.removeFriend(friend.getEmail(), true);
logger.info(friend.getEmail() + " add " + messenger);
}
/**
* 被他人删除时候的处理
*/
public void contactRemovedMe(MsnMessenger messenger, MsnContact friend) {
messenger.removeFriend(friend.getEmail(), true);
logger.info(friend.getEmail() + " remove " + messenger);
}
/**
* 对话窗口关闭时候的处理
*/
public void switchboardClosed(MsnSwitchboard switchboard) {
logger.info(switchboard + " closed");
}
/**
* 对话窗口打开时候的处理
*/
public void switchboardStarted(MsnSwitchboard switchboard) {
logger.info(switchboard + " started");
}
/**
* 对话窗口中邀请他人时候的处理
*/
public void contactJoinSwitchboard(MsnSwitchboard switchboard, MsnContact friend) {
logger.info(friend.getEmail() + " join " + switchboard);
}
/**
* 对话窗口中他人离开时候的处理
*/
public void contactLeaveSwitchboard(MsnSwitchboard switchboard, MsnContact friend) {
logger.info(friend.getEmail() + " leave " + switchboard);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -