A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 客户端通过键盘录入用户名。
  3. 服务端对这个用户名进行校验。

  4. 如果该用户存在,在服务端显示xxx,已登录。
  5. 并在客户端显示xxx欢迎光临。

  6. 如果该用户不存在,在服务端显示xxx,尝试登录。
  7. 并在客户端显示xxx,该用户不存在。

  8. 最多就登陆三次

  9. */

  10. import java.io.*;
  11. import java.net.*;

  12. class LoginClient
  13. {
  14.         public static void main(String[] args)throws Exception
  15.         {
  16.                 Socket s = new Socket("JEFF-PC",10008);
  17.                
  18.                 BufferedReader bufr =
  19.                 new BufferedReader(new InputStreamReader(System.in));

  20.                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);

  21.                 BufferedReader bufIn =
  22.                 new BufferedReader(new InputStreamReader(s.getInputStream()));

  23.                 for(int x=0;x<3;x++)
  24.                 {
  25.                         String line = bufr.readLine();
  26.                         if(line==null)
  27.                         {       
  28.                                 break;
  29.                         }
  30.                         out.println(line);
  31.                        
  32.                         //System.out.println(line);

  33.                         String info = bufIn.readLine();

  34.                         System.out.println("info:"+info);

  35.                         if(info.contains("欢迎"));
  36.                         {
  37.                                 break;
  38.                         }
  39.                 }

  40.                 bufr.close();

  41.                 s.close();
  42.         }
  43. }

  44. class UserThread implements Runnable
  45. {
  46.         private Socket s;
  47.         UserThread(Socket s)
  48.         {
  49.                 this.s = s;
  50.         }
  51.         public void run()
  52.         {
  53.                 String ip = s.getInetAddress().getHostAddress();

  54.                 System.out.println(ip);

  55.                 try
  56.                 {       
  57.                         for(int x=0;x<3;x++)
  58.                         {
  59.                                
  60.                                 BufferedReader bufIn =
  61.                 new BufferedReader(new InputStreamReader(s.getInputStream()));

  62.                                 String name = bufIn.readLine();
  63.                                 if(name==null)
  64.                                         break;
  65.                                 //System.out.println(count++);
  66.                                 BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));

  67.                                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);
  68.                        
  69.        
  70.                                 String line = null;
  71.                        
  72.                                 boolean flag = false;

  73.                                 while((line=bufr.readLine())!=null)
  74.                                 {
  75.                                         if(line.equals(name))
  76.                                         {
  77.                                                 flag = true;
  78.                                                 break;
  79.                                         }
  80.                                 }
  81.                                 if(flag)
  82.                                 {
  83.                                         System.out.println(name+",已登录");               
  84.                                        
  85.                                         out.println(name+",欢迎光临");

  86.                                         break;
  87.                                 }
  88.                                 else
  89.                                 {
  90.                                         System.out.println(name+",尝试登录");               
  91.                                        
  92.                                         out.println(name+",用户名不存在");

  93.                                 }
  94.                        
  95.                         }
  96.                        
  97.                         s.close();
  98.                 }
  99.                 catch(Exception e)
  100.                 {

  101.                         throw new RuntimeException(ip+"校验失败");
  102.                
  103.                 }
  104.         }
  105. }


  106. class LoginServer
  107. {
  108.         public static void main(String[] args)throws Exception
  109.         {
  110.                 ServerSocket ss = new ServerSocket(10008);


  111.                 while(true)
  112.                 {
  113.                         Socket s = ss.accept();

  114.                         new Thread(new UserThread(s)).start();
  115.                 }
  116.         }
  117. }
复制代码


最终现象就是客户端只输入一次,客户端和服务端就会终止,不知问题出现在哪里

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马