Search code examples
javaserverclient

Send an object from a client to a server in java


How do i send an object to a server in java?

Client:

    Help h = new Help("Mattia Cammalleri","Informatica","18 Novembre 2020");
    
    Socket s = new Socket("localhost", 8888);
    ObjectOutputStream os = new ObjectOutputStream(s.getOutputStream()); 
    ObjectInputStream is = new ObjectInputStream(s.getInputStream());
    os.writeObject(h);
    os.flush();

Server:

    ServerSocket ss = new ServerSocket(8888);
    Socket s = ss.accept(); 
    ObjectOutputStream os = new ObjectOutputStream(s.getOutputStream()); 
    ObjectInputStream is = new ObjectInputStream(s.getInputStream());
    Help h = (Help) is.readObject();
    System.out.println("Richiesta " + h);

Object (implements serializable):

public String alunno;
public String materia;
public String data;

Why it doesn't work?


Solution

  • I solved it in this way:

    Client:

        Help h = new Help("Mattia Cammalleri","Informatica","18 Novembre 2020");
        Socket socket = new Socket("localhost", 7777);
        System.out.println("Connected");
        OutputStream outputStream = socket.getOutputStream();
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        System.out.println("The object has been sent");
        objectOutputStream.writeObject(h);
        socket.close();
    

    Server:

        ServerSocket ss = new ServerSocket(7777);
        System.out.println("Waiting for the client");
        Socket socket = ss.accept();
        System.out.println("Connected from " + socket + "!");
        InputStream inputStream = socket.getInputStream();
        ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
        Help h = (Help) objectInputStream.readObject();
        System.out.println("Object: " + h);
        ss.close();
        socket.close();