터미널에서 서버에서 클라이언트로 메시지를 전달하려고합니다. 프로그램에서 수행하고자하는 것은 클라이언트에서 명령을 입력하고 서버에서 응답을 받아야하며 클라이언트를 재시작하지 않고 다른 명령을 입력 할 수 있어야합니다 (Java 클라이언트에 의해).Java 클라이언트 서버
Client.java
Socket socket = new Socket(host, port);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String response = "";
boolean continuation = true;
while(continuation) {
Scanner input = new Scanner(System.in);
String command = (input.nextLine()).toString();
bw.write(command+"\r\n");
bw.flush();
if(command.equals("cmd1") {
while ((response = br.readLine()) != null) {
System.out.println(response);
}
}
System.out.println("This line will not execute as well.");
}
Server.java
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
String[] in = br.readLine().split("\\s+");
String command = in[0];
if(command.equals("cmd1")) {
String response = "";
response = response + "RESPONSE:\r\n";
response = response + "This is a response.\r\n";
bw.write(response);
bw.flush();
}
나는 동안 ((응답 = br.readLine() 넣지 않으면! = NULL) {. ..} Client.java에서는 터미널에 여러 입력을 입력 할 수 있지만 입력하면 서버에서 응답을 인쇄하고 클라이언트를 다시 시작하지 않으면 다른 입력을 수행 할 수 없습니다.
도움을 주시면 감사하겠습니다.
감사
클라이언트를 다시 시작의 무엇을 의미합니까? 응답이 null 일 때 Client.java가 종료 될 것입니다. –
터미널에 명령을 입력하고 Enter 키를 누르면 클라이언트 터미널에서 인쇄되는 서버가 응답을 보내야합니다. 그러나 그 후에 다른 명령을 입력하고 서버에 응답을 입력하고 수신 할 수 없습니다. 클라이언트를 종료하고 다시 시작해야합니다. – user2556140
커맨드를 입력하고 클라이언트를 재시작 할 필요없이 계속적으로 응답을 얻을 수 있기를 바랍니다. – user2556140