java版msn_强!Java实现MSN Messenger聊天

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

}

}

package process; import java.io.FileNotFoundException; import java.io.IOException; import objectClass.BTreeNode; public class BTree { private String name = "";//此b树的名字 也是存储数据的根目录 private String node_address = "";//查找时找到键值所在文件的名称 private int node_index = 0;//查找是找到键值所在文件内部的下标索引 private int flag = 0;//节点增减是否需要调整的标志 private int tree_level = 0;//b树的层数 private int tree_count = 0;//b树内元素的总个数 private int node_sun = 0;//b树节点的个数 private int level = 0;//当前访问的节点所在处的高度 private String newNode = "";//在节点分割时指向新建的节点的名字(路径) private int insKey = 0;//需要插入的关键值 private Object insObj = null;//需要插入的对象 private int readCount = 0;//统计一次操作(查找、插入、删除)所要读硬盘的次数 private int writeCount = 0;//统计一次操作(查找、插入、删除)所要写硬盘的次数 private String firstNode = "";//此b树的头节点的名字(路径) //临时节点的地址索引、路径和节点的名字 private BTreeNode tempNode = null; private String tempNodePath = null; private String tempNodeName = null; public BTree(){ } /** * 根据输入的关键值查找相应的数据 * 查找成功返回相应的数据对象 * 查找不成功返回null * @throws ClassNotFoundException * @throws IOException * @throws FileNotFoundException * */ public Object search(int key) throws FileNotFoundException, IOException, ClassNotFoundException{ int i , j , m; clearCount(); level = tree_level - 1; tempNodeName = firstNode; while(level >= 0){ tempNodePath = MyObjectIO.getExactPath(name, tempNodeName , MyObjectIO.INDEX); tempNode = (BTreeNode)MyObjectIO.readObject(tempNodePath); readCount++; for(i = 0 , j = tempNode.count-1; i < j ; m=(i+j)/2 , ((key>tempNode.key[m]) ? (i=m+1) : (j=m)) ); if(key == tempNode.key[m]){//找到读出相应的数据记录返回 } if(key > tempNode.key[i]) i++; tempNodeName = tempNode.child[i]; level--; } return null; } /** * 清除记录读写硬盘的计数器 * */ public void clearCount(){ readCount = 0; writeCount = 0; } /** * 返回记录读硬盘的次数 * */ public int getReadCount(){ return readCount; } /** * 返回记录写硬盘的次数 * */ public int getWriteCount(){ return writeCount; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值