Wie sende ich ein OBJEKT über TCP in Java?

Ich schreibe ein Programm zum Senden vonObjekt von einer Klasse zu einer anderen Klasse. Hier ist ein kurzes Beispiel für mein Programm, um das Problem darzustellen. Wie Sie sehen können, ist das Objekt, das vom Server an den Client gesendet werden soll, die Klasse Studentdie in jeder Klasse (Server / Client) separat definiert wurde. Ich habe diesen Code untersucht, indem ich eine ArrayList gesendet habe, die einwandfrei funktioniert, aber wenn es um einen von mir definierten Klassentyp geht, erhalte ich diesen Fehler:

Exception in thread "main" java.lang.ClassCastException: ServerSide$1Student cannot be cast to ClientSide$1Student
    at ClientSide.main(ClientSide.java:29)

Hier ist der Code für die Serverseite:

import java.io.*;
import java.net.*;

public class ServerSide {

    public static void main(String[] args) {
        class Student implements Serializable
        {
            int id;
            public Student(int num){id=num;}
            public void setID(int num){id=num;}
            public void Print(){System.out.println("id = " + id);}
        }
        try
        {
            Student a = new Student(3);
            ServerSocket myServerSocket = new ServerSocket(9999);
            Socket skt = myServerSocket.accept();   
            try 
            {
                ObjectOutputStream objectOutput = new ObjectOutputStream(skt.getOutputStream());
                objectOutput.writeObject(a);                
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            } 
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
}

Und für die Kundenseite ist:

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientSide {

    public static void main(String[] args)
    {
        class Student implements Serializable
        {
            int id;
            public Student(int num){id=num;}        
            public void setID(int num){id=num;}
            public void Print(){System.out.println("id = " + id);}
        }
        try {       
            Socket socket = new Socket("10.1.1.2",9999);
            try {
                ObjectInputStream objectInput = new ObjectInputStream(socket.getInputStream());
                try {
                    Object object =(Student) objectInput.readObject();
                    Student tmp = (Student) object;
                    tmp.Print();
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }           
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }   
    }   
}

Bearbeiten:

Ich habe sie in dieselbe Datei verschoben und die Seriennummer hinzugefügt. Es funktioniert gut.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage