服务器线程
package schatserver;
public ServerThread(Socket socket) {
this.socket = socket;
this.start();
}
public void run() {
try {
ObjectInputStream inputStream = new ObjectInputStream(this.socket.getInputStream());
ObjectOutputStream outputStream = new ObjectOutputStream(this.socket.getOutputStream());
container = (Message) inputStream.readObject();
.....
..... etc
和“Message class”包含服务器端和客户端
public class Message implements Serializable {
private String login;
private String message;
private String[] users;
private Date time;
public Message(String login, String message){ //for client
this.login = login;
this.message = message;
this.time = java.util.Calendar.getInstance().getTime();
}
public Message(String login, String message, String[] users){//for server
this.login = login;
this.message = message;
this.time = java.util.Calendar.getInstance().getTime();
this.users = users;
}
尝试发送对象“消息”
private static Message message;
public void Connect() {
try {
sock = new Socket(ClientConfig.HOST, ClientConfig.PORT);
System.out.println("Connected with: " + ClientConfig.HOST);
ObjectOutputStream out = new ObjectOutputStream(sock.getOutputStream());
out.writeObject(message);
out.flush();
在此行获取“java.lang.ClassNotFoundException:socketchatclient.Message”
container = (Message) inputStream.readObject();
有人可以解释我应该如何发送对象消息吗?
socketchatclient。 - 这是客户端包
答案 0 :(得分:2)
java.lang.ClassNotFoundException:socketchatclient.Message
这意味着您正在尝试反序列化您没有的类。很可能客户端上的代码与服务器上的代码不同,客户端已经序列化了它的类,但除非服务器在同一个包中也有这个类,否则它不能反序列化它。
我建议你有一个可序列化对象的通用模块,以及客户端和服务器共享,以确保两端都有相同的类。