나는이 코드를 내게 부 자연스럽게 보였다. 일반적으로 루프의이 코드에 표시된대로 부울 변수 done
보다는 hasNextLine()
을 사용하지만 지금은 혼란 스럽습니다. 내 질문은, 콘솔에서 입력이 예상되는 경우 변수 done
이 표시된 논리를 hasNextLine()
으로 바꿀 수 있습니까? 아니면 입력이 파일에서 오는 경우에만 hasNextLine()
을 사용할 수 있습니까? done
변수 또는 hasNextLine()
을 사용하여 입력이 콘솔에서 오는 경우이 코드를 구현하는 더 나은 연습 방법은 무엇입니까? 감사.Java 기본 콘솔 프로그래밍 - hasNextLine을 사용하여 콘솔에서 입력을 읽을 수 있습니까?
// TCPClient.java
import java.net.*;
import java.io.*;
import java.lang.*;
public class TCPClient{
public static void main(String args[]){
Socket clientSock=null;
try{
int port_num = Integer.valueOf(args[1]).intValue(); //get server's port no.
clientSock = new Socket(args[0],(int)port_num); // args[0] is the server host name
/* String sock=clientSock.toString();
System.out.println(sock); */
PrintWriter oStream =
new PrintWriter(clientSock.getOutputStream(),true);
BufferedReader iStream =
new BufferedReader(new InputStreamReader
(clientSock.getInputStream()));
BufferedReader keyInput =
new BufferedReader(new InputStreamReader(System.in));
boolean done = false;
String answer = iStream.readLine();
if(answer != null)
System.out.println(answer);
while(!done){
String line = keyInput.readLine();
if(line.trim().equals("BYE"))
done = true;
oStream.println(line);
answer = iStream.readLine();
if(answer != null)
System.out.println(answer);
}
clientSock.close();
}catch(Exception e){
System.out.println(e);
}
}
}
죄송합니다. 귀하의 질문은 소켓과 관련이 없습니다. –
예제 프로그램에서 소켓을 사용하는 동안, 질문은 콘솔 입력과 허용 된 응답에 관한 것입니다. –