2017-11-11 9 views
0

소켓, 클라이언트가 서버에 문자 입력을 보내는 행맨 게임을 사용하여 클라이언트와 서버를 만들었습니다. 플레이어가이기거나 잃으면 서버가 종료됩니다. 나는 "Enter letter :"를 표시하기 전에 클라이언트가 동시에 종료되기를 원합니다. 이 일을하는 방법이 있습니까?서버와 클라이언트 소켓 연결을 동시에 닫습니다.

do { 
     System.out.println(); 
     System.out.print("Enter letter: "); 
     BufferedReader UserIn = new BufferedReader(new InputStreamReader(System.in)); 
     input = UserIn.readLine(); 
     pw.println(input); 
     System.out.println(SocketIn.readLine()); 
     System.out.println(); 

     while(SocketIn.ready()) { 
      System.out.println(SocketIn.readLine()); 
     } 

    } while (socket.isConnected()); 
+0

서버 응답에는 "finished"및 "continue"와 같은 명령이 있어야 클라이언트 동작을 제어 할 수 있습니다. 소켓을 닫으면 빠르지 않고 신뢰할 만합니다. 소켓 상태는 클라이언트에 의한 다음 읽기/쓰기 작업에서 인식됩니다. – Konrad

+0

@Konrad 제 서버가 "while (true)"루프를 진행하고 있습니다. 서버는 if/else 문에서 플레이어가이기거나 패소하면 닫힙니다. "끝낸다"고 할 때 예를들 수 있습니까? 많은 감사합니다. –

답변

0

ready() 시험의 제거와 같은 루프를 코딩 :

String line; 
while ((line = SocketIn.readLine()) != null) 
{ 
    System.out.println(line); 
} 

ready()이 스트림의 마지막에 대해 말할 수 없다 여기

내 클라이언트 코드의 일부이다 . isConnected()도 마찬가지입니다.

관련 문제