Java - 从服务器再次向客户端请求密码

时间:2013-03-10 21:55:15

标签: java passwords client-server

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

但是,我尝试向服务器添加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循环?我不太确定......

2 个答案:

答案 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()){

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

我希望它可以帮到你。