我正在尝试创建一个更高级的服务器到客户端程序,但我偶然发现了一个问题。我设法要求客户输入密码,如果是,则拒绝客户端。
但是,我尝试向服务器添加while条件:如果客户端输入了错误的密码,请让他/她重新输入密码。但我尝试使用扫描仪,但不认为这是解决方案,因为我收到错误。
服务器端:
while(pw.equals("PASS")){
toClient.writeBytes("This pw " + pw + " is correct. Access granted! " + "\n");
}
toClient.writeBytes("Your password... " + pw + " is wrong. Please retry.");
pw = fromClient.readLine();
toClient.writeBytes(pw+ "\n");
}
客户方:
System.out.print("Enter your password: ");
myPass = fromUser.readLine();
toServer.writeBytes(myPass + "\n");
myPass = fromServer.readLine();
System.out.println(myPass);
代码很长。一切正常。建立连接,端口号相同。唯一的问题是我无法让客户端重新输入密码,直到更正。
我是否必须为客户端进行while循环?我不太确定......
答案 0 :(得分:1)
1st:为什么服务器端有while循环?
第二:@ j0chn建议在客户端使用标志的循环是正确的方法。
答案 1 :(得分:0)
我建议使用一个布局来保持循环活动。
像这样:
boolean isCorrect = false;
System.out.print("Enter your password: ");
while(!isCorrect){
myPass = fromUser.readLine();
toServer.writeBytes(myPass + "\n");
if(myPass == fromServer.readLine()){
isCorrect = true;
}
myPass = fromServer.readLine();
System.out.println(myPass);
}
也许你必须改变这一部分:
if(myPass == fromServer.readLine()){
为:
if(myPass.equals(fromServer.readLine()){
但请记住,有很多可能性。
我希望它可以帮到你。