ConnectThread
package Chat.Service;
import Chat.common.Message;
import Chat.common.MessageType;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.HashMap;
import java.util.Iterator;
/**
* @author whlie(true){learn}
* 和客户端保持通信
*/
public class ConnectThread extends Thread {
private Socket socket;
//连接到服务端的用户ID
private String userId;
public ConnectThread( String userId,Socket socket) {
this.socket = socket;
this.userId = userId;
}
public Socket getSocket() {
return socket;
}
@Override
public void run() {
while(true){
System.out.println("客户端"+userId+"与服务器正在通信...");
try {
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
Message message=(Message) ois.readObject();
//根据message的类型做相应的业务处理
if (message.getMesType().equals(MessageType.GET_ONLINE)){
//在线用户列表
System.out.println(message.getSender()+"请求在线用户列表");
String online = Manage.getOnline();
//构建message对象返回给客户端
Message message2 = new Message();
message2.setMesType(MessageType.RET_ONLINE);
message2.setContent(online);
message2.setGetter(message.getSender());
//通过输出流发往客户端
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(message2);
}else if(message.getMesType().equals(MessageType.COMMON_MES)){
//获取目标线程