求助:Socket传输Object类型时,出现ClassNotFound异常
我要实现的功能是:客户端向服务器发送一个Employee对象,服务器接收后打印出Employee对象信息,同时服务器也创建一个Employee对象返回给客户端,客户端也打印出相应信息。
调试的时候,会在客户端抓到ClassNotFoundException
Employee类:
public class Employee implements Serializable{
/**
*
*/
private static final long serialVersionUID = 2956605195507987353L;
private int employeeNumber;
private String employeeName;
public Employee(int i ,String b){
employeeNumber = i;
employeeName = b;
}
public int getEmployeeNumber() {
return employeeNumber;
}
public void setEmployeeNumber(int employeeNumber) {
this.employeeNumber = employeeNumber;
}
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
}
服务器类:
public class Server {
private static final int port = 1234;
ServerSocket server ;
Socket socket_obj ;
ObjectInputStream input;
ObjectOutputStream output;
public void getMessage() throws IOException, ClassNotFoundException{
server = new ServerSocket(Server.port);
socket_obj = server.accept();
ObjectOutputStream out = new ObjectOutputStream(socket_obj.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket_obj.getInputStream());
/**获取信息*/
Employee recieve = (Employee) in.readObject();
System.out.println(recieve.getEmployeeName());
System.out.println(recieve.getEmployeeNumber());
/**返回信息*/
Employee back = new Employee(123, "fuyun");
out.writeObject(back);
out.flush();
in.close();
out.close();
socket_obj.close();
server.close();
}
public static void main(String[] args) {
try {
new Server().getMessage();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
客户端类:
public class Client {
private static final int port = 1234;
Socket socket_obj ;
ObjectInputStream input;
ObjectOutputStream output;
public void getMessage() throws IOException, ClassNotFoundException{
socket_obj = new Socket(InetAddress.getLocalHost(),Client.port);
ObjectOutputStream out = new ObjectOutputStream(socket_obj.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket_obj.getInputStream());
/**发送信息*/
Employee back = new Employee(465, "shenma");
out.writeObject(back);
/**获取信息*/
Employee recieve = (Employee) in.readObject();
System.out.println(recieve.getEmployeeName());
System.out.println(recieve.getEmployeeNumber());
in.close();
out.close();
socket_obj.close();
}
public static void main(String[] args) throws IOException, ClassNotFoundException {
new Client().getMessage();
}