[英]Server Client in Java only displays message when I press enter
[英]Java server/client application only displays messages upon pressing enter
服务器端:
try {
ServerSocket server_socket=new ServerSocket(port_number);
Socket client_socket= server_socket.accept();
PrintWriter output = new PrintWriter(client_socket.getOutputStream(),true);
BufferedReader input = new BufferedReader(new InputStreamReader(client_socket.getInputStream()));
BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in));
String userInput, clientOutput;
while ((userInput=stdIn.readLine())!="EXIT") {
if ((clientOutput=input.readLine())!=null) {
System.out.println("Client: "+clientOutput);
} if (userInput!=null) {
output.println(userInput);
output.flush();
}
}
}
客户端:
try {
Socket client_socket= new Socket(hostname,port_number);
PrintWriter output = new PrintWriter(client_socket.getOutputStream(),true);
BufferedReader input = new BufferedReader(new InputStreamReader(client_socket.getInputStream()));
BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in));
String userInput,serverOutput;
while ((userInput=stdIn.readLine())!="EXIT") {
if ((serverOutput=input.readLine())!=null) {
System.out.println("Server: "+serverOutput);
} if (userInput!=null) {
output.println(userInput);
output.flush();
}
}
}
就我而言,代码对我来说很有意义,我似乎无法弄清为什么仍然需要按下Enter键,它与.readLine()
吗? 我签出了以下帖子,当按Enter时,Java中的Server Client仅显示消息 ,但是提供的解决方案无法解决这种情况。
注意:最初,在while循环中没有if语句。 我认为这是一个问题,而while循环可能会停留在其中一行上,等待用户/服务器输入。 因此,实现if语句允许它跳过等待部分并重新运行循环。
原来我把变量混在一起了。 while循环应为:
while ((userInput=input.readLine())!="EXIT") {
它已修复,但仍然存在其他一些问题
它与.getLine()有关系吗?
是。 如果您查看BufferedReader#readLine()的Javadoc ,则会清楚地指出行尾字符会终止要读取的String:
读取一行文本。 一行被认为由换行符('\\ n'),回车符('\\ r')或回车符后立即换行符中的任何一个终止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.