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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zcbyzcb 中级黑马   /  2013-7-30 21:09  /  840 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有还记得的吗,毕老师基础课成day24 LoginDemo.java中写的线程类,我的是这样的,把定义的几个流都写在了for循环外边,可是在客户端,只要第一次输错,第二三次就都输错了,我找到症结所在是这句代码,BufferedReader buf=new BufferedReader(new FileReader("user.txt")); 可是不知道为什么,上个完整代码吧。
  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(InetAddress.getByName("192.168.0.101"),10008);
  17.                 //包装Socket对象输出流
  18.                 PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
  19.                 //定义键盘读入数据流
  20.                 BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
  21.                 //包装Socket对象输入流
  22.                 BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));

  23.                 for(int i=0; i<3; i++)
  24.                 {
  25.                         String line=bufr.readLine();
  26.                         if(line==null)
  27.                                 break;
  28.                         pw.println(line);
  29.                        
  30.                         String info=bufin.readLine();
  31.                         System.out.println("info:"+info);
  32.                         if(info.contains("欢迎"))
  33.                                 break;
  34.                 }
  35.                 bufr.close();
  36.                 s.close();
  37.         }
  38. }
  39. class LoginThread implements Runnable
  40. {
  41.         private        Socket s;
  42.         LoginThread(Socket s)
  43.         {
  44.                 this.s=s;
  45.         }
  46.         public void run()
  47.         {
  48.                 String ip=s.getInetAddress().getHostAddress();
  49.                 System.out.println(ip+"....+connected");
  50.                 try
  51.                 {
  52.                         BufferedReader bufin=new BufferedReader(new InputStreamReader(s.getInputStream()));
  53.                         BufferedReader buf=new BufferedReader(new FileReader("user.txt"));
  54.                         for(int i=0; i<3; i++)
  55.                         {
  56.                                

  57.                                 PrintWriter pw=new PrintWriter(s.getOutputStream(),true);

  58.                                 String name=bufin.readLine();
  59.                                 if(name==null)
  60.                                 {
  61.                                         System.out.println(ip+"断开连接");
  62.                                         break;
  63.                                 }
  64.                                 boolean flag=false;
  65.                                 String line=null;
  66.                                 while((line=buf.readLine())!=null)
  67.                                 {
  68.                                         if(line.equals(name))
  69.                                         {
  70.                                                 flag=true;
  71.                                                 break;
  72.                                         }
  73.                                 }
  74.                                 if(flag)
  75.                                 {
  76.                                         System.out.println(name+"已登陆");
  77.                                         pw.println(name+"欢迎光临");
  78.                                         break;
  79.                                 }
  80.                                 else
  81.                                 {
  82.                                         System.out.println(name+"尝试登陆");
  83.                                         pw.println(name+",用户名不存在!");
  84.                                 }
  85.                         }
  86.                         s.close();
  87.                 }
  88.                 catch (Exception e)
  89.                 {
  90.                         throw new RuntimeException(ip+"校验失败!");
  91.                 }
  92.         }
  93. }
  94. class  LoginServer
  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 LoginThread(s)).start();
  103.                 }
  104.                
  105.         }
  106. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

1 个回复

倒序浏览
这个咋就没人看呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马