8:30-9:00 学习打卡
9:30-12:00 写qq项目
15:00-17:00 写qq项目
1.信息接收线程hashmap
将线程保存并用id找线程。
public class Mythreads {//这是服务器的线程组
private static HashMap hm=new HashMap<String,Mythread>();
public static void add(String id,Mythread m){//以id添加线程
hm.put(id,m);
}
public static Mythread getthread(String id){//输入id调用返回相应线程
return (Mythread) hm.get(id);
}
}
public class Mqqchat {//qq聊天框线程
public static HashMap hm=new HashMap<String , qqchat>();
public static void addchat(String id,qqchat qc){
hm.put(id,qc);
}
public static qqchat getchat(String id){
return (qqchat) hm.get(id);
}
}
2.客户端接收线程类
登录成功后将开辟一个线程用来不断的接收信息。
public class Mthread extends Thread{
public Socket s;
public Mthread(Socket s) {
this.s = s;
}
@Override
public void run() {
try {
ObjectInputStream ois=new ObjectInputStream(s.getInputStream());
Massage m=(Massage)ois.readObject();
System.out.println(m.getMyid()+"发给"+m.getOid()+":"+m.getXiaoxi());
qqchat qc=Mqqchat.getchat(m.getOid()+" "+m.getMyid());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
3.找出了一些问题
在创建socket后,创建输入输出流并关闭时socket也会一起关闭。