2013-07-21 98 views
0

我真的试图让一个程序在服务器要求客户端的密码,如果不对发送一条消息,但问题是服务器客户端身份验证

我真的无法做出的BufferedReader等到客户端已输入密码

在显示消息“输入密码” 后,我希望客户端输入密码并执行操作,但我无法使BufferedReader等待客户端发送任何有效数据流

**Client** 
package FTP; 
import java.io.*; 
import java.util.*; 
import java.net.*; 
import java.util.*; 

class Client{ 
    String input,output,str; 
    Socket s; 
    BufferedReader br; 
    PrintWriter pw; 
    Scanner in=new Scanner(System.in); 

    Thread read=new Thread(new Runnable(){ 
     @Override 
     public void run() { 
     try{ 
      while(true){ 
      input=br.readLine(); 
      System.out.println(input); 
      if(input.equals("true")) 
       break; 
     } 
     }catch(Exception E){} 
     } 
    }); 

    Thread write=new Thread(new Runnable(){ 
     @Override 
     public void run() { 
      while(true){ 
       output=in.nextLine(); 
       pw.println(output); 
      } 
     } 
    }); 
    public void start()throws Exception{ 
     s=new Socket("localhost",30000); 
     br=new BufferedReader(new InputStreamReader(s.getInputStream())); 
     pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true); 
     read.start(); 
     write.start(); 
    } 
    public static void main(String[] args) { 
     Client c=new Client(); 
     try { 
      c.start(); 

     } catch (Exception e) { 
     } 
    } 

} 

服务器

package FTP; 
import java.net.*; 
import java.io.*; 
    class Server{ 
     String input,output,path="D:/FTP/Server"; 
     private final String passwd="0000"; 
     ServerSocket ss; 
     Socket s; 
     BufferedReader br; 
     PrintWriter pw; 


     Thread read=new Thread(new Runnable(){ 
      @Override 
      public void run() { 
      try{ 
       while(true){ 
       input=br.readLine(); 
       } 
      }catch(Exception e){} 
      } 
     }); 
     Thread write=new Thread(new Runnable(){ 
      @Override 
      public void run() { 

        while(true){ 
        try { 
         pw.println("Enter Password"); 
        //while(br.readLine().isEmpty()){ 

        //} 

        if(input.equals(passwd)){ 
         pw.println("You Entered Magic Word"); 
         pw.println("true"); 
         break; 
        } 

        else{ 
         pw.println("Wrong Entry"); 
         pw.flush(); 
        } 
        } catch (Exception e) {} 
        } 
       } 

     }); 


     public void start() throws Exception{ 

      ss=new ServerSocket(30000); 
      s=ss.accept(); 
      br=new BufferedReader(new InputStreamReader(s.getInputStream())); 
      pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true); 
      read.start(); 
      write.start(); 
     } 
     public static void main(String[] args) { 
      Server s=new Server(); 
      try { 
       s.start(); 
      } catch (Exception e) { 
      } 
     } 
    } 

我一直在使用 而(br.ready()),或在(br.readLine()的isEmpty()),但我不能让它等待

回答

0

尝试尝试使用一段时间(br.readline()!= NULL)

+0

要评论 – liyakat

+0

嗨它不解决我不得不放弃从客户端2输入才从服务器获取响应的问题,它的输入错误或魔字 – AAB

相关问题