客户端登陆服务器用户名验证

[java] view plain copy  print?
  1. /* 
  2. 客户端通过键盘录入用户名。 
  3. 服务端对用户名进行验证。 
  4.  
  5. 如果用户名存在,服务端显示xxx已登录,客户端显示xxx,欢迎登陆。 
  6. 如果用户名不存在,服务端显示xxx尝试登陆,客户端显示xxx,用户名不存在。 
  7.  
  8. 最多登陆三次,防止暴力登陆。 
  9. */  
  10. import java.io.*;  
  11. import java.net.*;  
  12. /* 
  13. *客户端 
  14. */  
  15. class  client  
  16. {  
  17.     public static void main(String[] args) throws Exception  
  18.     {  
  19.         Socket s = new Socket("192.168.33.1",10008);//建立服务  
  20.         BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//读取键盘输入用户名  
  21.         PrintWriter pw = new PrintWriter(s.getOutputStream(),true);//读到数据往服务端写  
  22.         BufferedReader bufin =   
  23.             new BufferedReader(new InputStreamReader(s.getInputStream()));//将客户端返回的数据读入  
  24.         for(int x = 0;x < 3; x ++)//只登陆3次设定  
  25.         {  
  26.             String line = bufr.readLine();//读取用户名  
  27.             pw.println(line);  
  28.             if(line == null)//为空用户名终止  
  29.                 break;  
  30.             pw.println(line);  
  31.             String info = bufin.readLine();//读取服务端返回的数据  
  32.             System.out.println("Server info:"+info);  
  33.             if(info.contains("欢迎登陆"))//用户登录终止  
  34.                 break;  
  35.         }  
  36.         bufr.close();  
  37.         s.close();  
  38.     }  
  39. }  
  40. /* 
  41. *服务端 
  42. */  
  43. class ServerThread implements Runnable  
  44. {  
  45.     private Socket s;  
  46.     ServerThread(Socket s)  
  47.     {  
  48.         this.s = s;  
  49.     }  
  50.     public void run()  
  51.     {  
  52.         String ip = s.getInetAddress().getHostAddress();  
  53.         System.out.println(ip+"...........connect");  
  54.         try  
  55.         {  
  56.             for(int x = 0;x < 3;x ++)  
  57.             {  
  58.                 BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));//读取客户端发送的数据  
  59.                 String name = bufin.readLine();  
  60.                 if(name == null)  
  61.                     break;  
  62.                 BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));//读取已存入用户账户,本来是读取数据库,这里方便就写了一个文本  
  63.                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);//写入流,服务端写出  
  64.                 String line = null;  
  65.                 boolean flag = false;//判断标记  
  66.                 while((line = bufr.readLine())!= null)//读取数据库(Use.txt)中数据  
  67.                 {  
  68.                     if(line.equals(name))//如果数据库和读取用户名相同,则终止  
  69.                     {  
  70.                         flag = true;  
  71.                         break;  
  72.                     }  
  73.                 }  
  74.                 if(flag)  
  75.                     {  
  76.                         System.out.println(name+":已登录");  
  77.                         out.println(name+":欢迎登陆");  
  78.                         break;  
  79.                     }  
  80.                 else  
  81.                 {  
  82.                     System.out.println(name+":尝试登陆");  
  83.                     out.println(name+":用户名不存在");  
  84.                 }  
  85.             }  
  86.             s.close();  
  87.         }  
  88.         catch (Exception e)  
  89.         {  
  90.             throw new RuntimeException("验证失败");  
  91.         }  
  92.     }  
  93. }  
  94. class  server  
  95. {  
  96.     public static void main(String[] args) throws Exception  
  97.     {  
  98.         ServerSocket ss = new ServerSocket(10008);//建立服务  
  99.         while (true)  
  100.         {  
  101.             Socket s = ss.accept();//接收客户端传来数据  
  102.             new Thread(new ServerThread(s)).start();//开启线程  
  103.         }  
  104.     }  
  105. }  

打印结果:

客户端登陆服务器用户名验证

user.txt

客户端登陆服务器用户名验证


转载:http://blog.csdn.net/chaoyu168/article/details/49906145

上一篇:持续集成、持续交付、持续部署 ---CI/CD概念


下一篇:持续集成(CI)和容器管理学习笔记