简体   繁体   English

如何使用Java将对象从服务器发送到客户端?

[英]How I can send a object from server to Client in Java?

hi i want to create a java programm that send objects and get Objects from a server. 嗨,我想创建一个Java程序来发送对象并从服务器获取对象。

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: 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: 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
    }

}

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. 当您在服务器端建立连接并获取InputStream时,可以以相同的方式获取OutputStream并将所需的任何内容发送回客户端。

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. 因此,它只能回答一些不发送任何东西,而是发送自己的东西。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM