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

标签 java sockets object client server

嗨,我想创建一个 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();

客户端也应进行相同的更改。请记住 - 客户端发起 session 。仅服务器应答。所以,它只能回答一些东西,不能发送一些东西,而是它自己。

关于java - 如何用 Java 将对象从服务器发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30878881/

相关文章:

java - Neo4j 令人震惊的写入性能

java - Android Studio - 如何更改图像资源?

java - 通过 LdapExtLoginModule 针对 Active Directory 林 (LDAP_REFERRAL) 进行身份验证

python - 如何使用 smtplib 和 Python 保持 SMTP 连接打开?

python - 使用套接字分别发送 2 条消息

java - 实例A = 实例B,这到底是做什么的?

java - 如何在 MyBatis 中使用结果集填充参数映射

android - 将android中的大文件发布到服务器

Javascript,设计函数来引用自身

objective-c - NSObject From String ...有什么办法吗?