这个是我论文的另一部分,继续求高手帮忙,跟上一部分要求一样
解析下com.qq.client.tools包,该包里面是相当于是客户端的后台程序
ClientConServerThread.java,里面是客户端和服务器通信的线程
//这是客户端和服务器端保持的通讯的线程
package com.qq.client.tools;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;
import com.qq.client.view.QqChat;
import com.qq.client.view.QqFriendList;
import com.qq.common.Message;
import com.qq.common.MessageType;
public class ClientConServerThread extends Thread{
private Socket s;
public Socket getS() {
return s;
}
public void setS(Socket s) {
this.s = s;
}
public ClientConServerThread(Socket s) {
this.s = s;
}
public void run() {
while(true) {
//不停的读取从服务端发来的消息
try {
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Message m = (Message)ois.readObject();
// System.out.println("读取从服务器发来的消息" + m.getSender() + "给" + m.getGetter() + "内容是" + m.getCon());
if(m.getMesType().equals(MessageType.message_comm_mes)) {
//把从服务器获得的消息,显示到聊天界面
QqChat qqChat = ManageQqChat.getQqChat(m.getGetter() + " " + m.getSender());
//显示
qqChat.showMessage(m);
System.out.println("hello baby");
}else if (m.getMesType().equals(MessageType.message_ret_onLineFriend)) {
// System.out.println("hello else baby");
System.out.println("客户端接收到" + m.getCon());
String con = m.getCon();
String friends[] = con.split(" ");
String getter = m.getGetter();
System.out.println("getter = " + getter );
//修改相应的好友列表。
QqFriendList qqFriendList = ManageQqFriendList.getQqFriendList(getter);
//更新在线好友
if(qqFriendList!=null) {
qqFriendList.updateFriend(m);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
ManageClientConServerThread.java里面是管理客户端与服务器进行通信线程的类,也就是HashMap里面存放了线程实例
//这是一个管理通讯客户端与服务器保持通讯线程的类
package com.qq.client.tools;
import java.util.HashMap;
public class ManageClientConServerThread {
private static HashMap hm = new HashMap<String, ClientConServerThread>();
//把创建好的ClientConServerThread放入到hm中;
public static void addClientConServerThread(String qqId, ClientConServerThread ccst) {
hm.put(qqId, ccst);
}
//可以通过qqId取得该线程
public static ClientConServerThread getClientConServerThread(String qqId) {
return (ClientConServerThread)hm.get(qqId);
}
}