0

我正在尝试创建一个更高级的服务器到客户端程序,但我偶然发现了一个问题。我设法要求客户输入密码,如果为假,它会拒绝客户。

但是,我尝试向服务器添加一段时间条件:如果客户端输入错误的密码,则要求他/她重新输入密码。但是我尝试使用扫描仪,但我收到错误时认为这不是解决方案。

服务器端:

 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循环吗?我不太确定...

4

2 回答 2

1

1st:为什么服务器端会有while循环?

第二:@j0chn 建议的在客户端使用标志的循环是正确的方法。

于 2013-03-10T22:19:09.263 回答
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()){

但请记住,有很多可能性。

我希望它对你有帮助。

于 2013-03-10T22:02:36.737 回答