Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java将对象从服务器发送到客户端?_Java_Sockets_Object_Client_Server - Fatal编程技术网

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

如何用Java将对象从服务器发送到客户端?,java,sockets,object,client,server,Java,Sockets,Object,Client,Server,嗨,我想创建一个java程序,从服务器发送对象和获取对象 为此,我创建了两个类: 如果我将一个对象从客户端发送到服务器,它可以工作,但如何将一个对象从服务器发送到客户端呢?:/ 客户经理: public class ClientManager { private String server; private int port; //Streams für Serialisierte Objekte private ObjectInputStream inputO

嗨,我想创建一个java程序,从服务器发送对象和获取对象

为此,我创建了两个类:

如果我将一个对象从客户端发送到服务器,它可以工作,但如何将一个对象从服务器发送到客户端呢?:/

客户经理:

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();
    }
}
服务器管理器:

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
    }

}

当您在服务器端建立连接并获取InputStream时,您可以以相同的方式获取OutputStream并将您想要的任何内容发送回客户端

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

客户端也应该进行同样的更改。请记住-客户端启动会话。仅服务器应答。因此,它只能用某种东西来回答,而不是发送某种东西,而是自己

请看这里:这里:和这里:好的,我希望我可以用两种方法来实现这一点。实际上,对象序列化充满了问题,当客户机类与服务器的版本过时时,您会怎么做?考虑使用像XML或JSON那样的交换格式