문자열을 서버로 보낼 수 있으며 서버도 동일한 문자열을 받았습니다. 서버가 확인 응답을 보낼 수 있지만 서버가 연결을 종료 할 때까지 클라이언트가 확인 응답을받지 못합니다. 하지만 연결을 닫고 싶지는 않습니다. 연결을 닫지 않고 확인을 어떻게 표시해야합니까?서버 소켓을 닫지 않고 클라이언트 측에서 승인을 받으려면 어떻게해야합니까?
//This is Client
public void Actuator1_Stop(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Socket socket = new Socket("localhost", 1028);
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
dout.writeUTF("Stop_Actuator");
dout.flush();
System.out.println("Command Sent = Stop_Actuator");
//Get the return message from server
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String message = br.readLine();
System.out.println("ACK received from the server : " +message);
socket.close();
} catch(Exception exception) {
exception.printStackTrace();
}
}
//This is Server
class Socket4 implements Runnable {
public void run() {
try {
ServerSocket ss = new ServerSocket(1028);
while(true) {
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
String cmd = dis.readUTF();
System.out.println("Command= "+cmd);
//Sending the response back to the client
String ack = null;
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
if(cmd.equals("Stop_Actuator")) {
ack= "Ok";
bw.write(ack);
} else {
ack = "Error";
bw.write(ack);
}
System.out.println("ACK sent to the client is "+ack);
bw.flush();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
public class MyServer {
public static void main(String[] args) {
Socket1 s1 = new Socket1();
Socket2 s2 = new Socket2();
Socket3 s3 = new Socket3();
Socket4 s4 = new Socket4();
Thread t1 = new Thread(s1);
Thread t2 = new Thread(s2);
Thread t3 = new Thread(s3);
Thread t4 = new Thread(s4);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
}
'ack = "Ok";' - 그 라인은 readline()이 반환 할 텍스트 라인을 보입니까? –
감사합니다. 그것은 효과가 있었다. 이제 나는 클라이언트 측에서 문제를 일으키고 있습니다. –
왜 한 방향으로 선을 보내고 다른 방향으로'writeUTF()'를 사용하고 있습니까? 일관성있게하십시오. – EJP