您好我想创建一个java程序,它发送对象并从服务器获取对象。
为此,我创建了两个类:
如果我将一个对象从客户端发送到服务器它可以工作,但我如何将一个对象从服务器发送到客户端? :/
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
}
}
答案 0 :(得分:1)
当您在服务器端连接并获取InputStream时,您可以采用相同的方式获取OutputStream,并将您想要的任何内容发送回客户端。
socket.getInputStream();
socket.getOutputStream();
同样的变化应该在客户端。请记住 - 客户端启动会话。服务器只回答。所以,它只能回答一些事情,而不是发送一些东西而不是自己。