1

hi i want to create a java programm that send objects and get Objects from a server.

For this I create two classes:

If i send a object from client to server it works but how i can send a object from server to client? :/

ClientManager:

public class ClientManager {
    private String server;
    private int port;

    //Streams für Serialisierte Objekte
    private ObjectInputStream inputObjectStream = null; 
    private ObjectOutputStream outputObjectStream = null; 

    //Konstruktor: Server und Port werden benötigt
    public ClientManager(String server,int port){
        this.server = server;
        this.port = port;
    }

    //Sendet ein Object an eine Serverinstanz
    public void sendObjectToServer(Object obj){
        try(Socket socket = new Socket(server,port)){

            outputObjectStream = new ObjectOutputStream(socket.getOutputStream());
            outputObjectStream.writeObject(obj);

            outputObjectStream.flush();
            outputObjectStream.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    //Bekommt ein Object von einer Serverinstanz 
    public Object getObjectFromServer(){
        return new Object();
    }
}

ServerManager:

public class ServerManager {

    private final int port; //Portnummer

    private Socket socket = null;

    private ObjectInputStream inputStream = null; //Objekt vom Client
    private ObjectOutputStream outputStream = null; //Objekt an Client

    private Object obj; //Objekt das übers Netzwerk gesendet wird

    //Konstruktor
    public ServerManager(int port){
        this.port = port;
    }

    //Bekommt ein Objekt von einem Client
    public Object getObjectFromClient(){

        try(ServerSocket serverSocket = new ServerSocket(port)) {
            socket = serverSocket.accept();

            inputStream = new ObjectInputStream(socket.getInputStream());

            obj = inputStream.readObject();

            socket.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

        return obj;
    }

    public void sendObjectToClient(Object obj){
        //Muss noch erstellt werden
    }

}
Tarasov
  • 3,625
  • 19
  • 68
  • 128
  • Take a look here: [Sending an object through a socket in java](https://stackoverflow.com/questions/19217420/sending-an-object-through-a-socket-in-java) here: [How to send any java Object through socket?](http://www.coderanch.com/t/205325/sockets/java/send-java-Object-socket) and here: [ServerSocket and Socket for Serializable object : Socket "Network Protocol" Java](http://www.java2s.com/Code/Java/Network-Protocol/ServerSocketandSocketforSerializableobject.htm) – tirz Jun 16 '15 at 21:57
  • ok i look i hope i can do this in two methods – Tarasov Jun 16 '15 at 21:57
  • Honestly, object serialization is fraught with issues, what do you do when the clients class is out of date with the server's version? Consider using an exchange format like XML or JSON instead – MadProgrammer Jun 16 '15 at 23:04

1 Answers1

1

When you have connection on the server side and get InputStream you can take OutputStream in the same way and send whatever you want back to the client.

socket.getInputStream();
socket.getOutputStream();

The same changes should be on the client side. Just remember - client initiates the session. Server only answers. So, it can only answer with something not send something but itself.

Alex
  • 4,457
  • 2
  • 20
  • 59