【发布时间】:2021-11-20 19:17:07
【问题描述】:
我有一个客户端驱动的 GUI (Swing),我需要处理多个请求。我可以处理一个请求,例如“登录,用户”,但我无法从服务器发出任何其他请求,例如“获取所有用户”。
如何在服务器上处理多个请求以及如何在客户端进行设置。
客户端
private Socket server;
public ClientConnection() {
try {
server = new Socket("127.0.0.1", 12345);
} catch(IOException e) {
System.out.println("Connection Error - Client: " + e.getMessage());
}
}
public void loginUser(User user) {
try {
ObjectOutputStream out = new ObjectOutputStream(server.getOutputStream());
out.flush();
ObjectInputStream in = new ObjectInputStream(server.getInputStream());
//How would I write the request type to the server
out.writeObject((User) user);
out.flush();
User getUserInfo = (User) in.readObject();
//System.out.println("Response from the server: " + getUserInfo.getRole());
out.close();
in.close();
server.close();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
服务器端
private ServerSocket serverListener;
private Socket client;
public ServerConnection() {
try {
serverListener = new ServerSocket(12345, 10);
} catch(IOException e) {
System.out.println("Server-Side Error: Connection" + e.getMessage());
}
}
public void server() {
try {
System.out.println("Server is listening");
client = serverListener.accept();
//How can I make a request and then process it depending on the type of
//request
//Gets the ObjectOutputStream and the ObjectInputStream and send a User object back to
//the client-side
loginUser();
} catch(IOException e) {
System.out.println(e.getMessage());
e.getStackTrace();
}
}
我最初的想法是拥有一个具有不同请求类型的 Enum 类,然后在我的 server() 方法中使用 switch 语句,并根据请求的类型调用方法来执行这些操作,但我不确定如何向服务器发送请求类型,如果在 server() 方法中处理请求类型将是最佳实践。
【问题讨论】:
-
如果我理解正确,您希望能够根据收到的内容处理多种行为?
-
是的@Flav 我将如何在客户端和服务器端处理它?
标签: java server client client-server