我已经看到这段代码,看起来不自然。我通常使用hasNextLine()
而不是布尔变量done
,如while
循环中的代码所示,但现在我很困惑。我的问题是,当我希望从控制台输入时,可以替换显示变量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);
}
}
}
对不起,你的问题与套接字无关。 – 2011-02-19 01:52:57
在示例程序中使用套接字时,问题是关于控制台输入(以及接受的答案)。 – 2011-02-19 02:25:12