/*
* 这是服务器与某个客户端的通讯线程
*/
package qqModel;
import java.net.*;
import qqCommon.Message;
import java.io.*;
public class SerConClientThread extends Thread {
Socket s;
public SerConClientThread(Socket s) {
//把服务器和客户端连接赋给s
this.s = s;
}
public void run() {
// while(true ) {
System.out.println("这是线程");
//这里该线程就可以接受客户端的信息
// ObjectInputStream ois;
try {
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Message m = (Message) ois.readObject();
System.out.println(m.getSender()+"发送给"+m.getGetter()+"的消息:"+m.getCon());
//完成转发
//取得接收人的通讯线程
SerConClientThread sc = ManageClientThread.getClientThread(m.getGetter());
//转发给接收人
ObjectOutputStream oos = new ObjectOutputStream(sc.s.getOutputStream());
//发送
oos.writeObject(m);
ois.close();
oos.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
// }
}
}
检查一下你的Message类有没有系列化。
如果没有在类名后面添加如下代码
implements Serializable
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员【8折】购 ,仅需→¥23.2,即可享受5次/月 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m