黑马程序员技术交流社区

标题: TCP服务端并发登录 [打印本页]

作者: 静心远行    时间: 2014-1-7 16:29
标题: TCP服务端并发登录
在看毕老师视频的时候对源代码的一些问题
  1. import java.net.*;
  2. import java.io.*;


  3. class LoginThread implements Runnable
  4. {
  5. private Socket s;
  6.         public LoginThread(Socket s)
  7.         {
  8.                 this.s = s;
  9.         }
  10.         public void run()
  11.         {
  12.                 String ip = s.getInetAddress().getHostAddress();
  13.                 System.out.println(ip+"connecting、、、");
  14.                 try
  15.                 {
  16.                        
  17.                         for(int x=0;x<3;x++)
  18.                         {
  19.                                 BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
  20.                                
  21.                                 BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));
  22.                                
  23.                                 PrintWriter bufout = new PrintWriter(s.getOutputStream(),true);
  24.                                
  25.                                 String line = bufin.readLine();
  26.                                
  27.                                 if(line==null)
  28.                                         break;
  29.                                
  30.                                 String username = null;
  31.                                
  32.                                 boolean flag = false;
  33.                                
  34.                                 while((username=bufr.readLine())!=null)
  35.                                 {
  36.                                         if(username.equals(line))
  37.                                         {
  38.                                                 flag = true;
  39.                                                
  40.                                                 break;
  41.                                                
  42.                                         }
  43.                                 }
  44.                                 if(flag)
  45.                                 {
  46.                                         System.out.println(line+"已登录!");
  47.                                        
  48.                                         bufout.println("ok");
  49.                                        
  50.                                         bufout.println("欢迎"+line+"登录!");
  51.                                        
  52.                                         break;
  53.                                 }
  54.                                 else
  55.                                 {
  56.                                         System.out.println(line+"尝试登录!");
  57.                                        
  58.                                         bufout.println("no");
复制代码
在处理服务器端的并发登录时,在线程类里边,老师是把BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));

BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));

PrintWriter bufout = new PrintWriter(s.getOutputStream(),true);
这三个流放在了循环里面,我如果把这三个流放在循环外边有什么不同吗?


在处理客户端登录时(最多登录三次),这三个流是放在循环外边的。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2