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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张小庆 中级黑马   /  2012-4-18 17:51  /  1236 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
客户端通过键盘录入用户名。
服务端对这个用户名进行校验。
如果该用户存在,在服务端显示xxx,已登陆。
并在客户端显示 xxx,欢迎光临。
如果该用户不存在,在服务端显示xxx,尝试登陆。
并在客户端显示 xxx,该用户不存在。
最多能登录三次。
*/
import java.io.*;
import java.net.*;
class  LoginClient
{
public static void main(String[] args) throws Exception
{
  Socket s = new Socket("127.0.0.1",10008);
  BufferedReader bufr =
   new BufferedReader(new InputStreamReader(System.in));
  PrintWriter out = new PrintWriter(s.getOutputStream(),true);
  BufferedReader bufIn =
   new BufferedReader(new InputStreamReader(s.getInputStream()));
  for(int x=0;x<3;x++)
  {
   String line = bufr.readLine();
   if(line==null)
    break;
   out.println(line);
   String info = bufIn.readLine();
   System.out.println("info:"+info);
   if(info.contains("欢迎"))
    break;
  }
  bufr.close();
  s.close();
}
}
class UserThread implements Runnable
{
private Socket s;
UserThread(Socket s)
{
  this.s = s;
}
public void run()
{
  String ip = s.getInetAddress().getHostAddress();
  System.out.println(ip+".....connected");
  try
  {
   for(int x=0;x<3;x++)
   {
    BufferedReader bufIn =
     new BufferedReader(new InputStreamReader(s.getInputStream()));
    String name = bufIn.readLine();
    if(name==null)
     break;
    BufferedReader bufr =
     new BufferedReader(new FileReader("user.txt"));
    PrintWriter out = new PrintWriter(s.getOutputStream(),true);
    String line = null;
    boolean flag = false;
    while((line=bufr.readLine())!=null)
    {
     if(line.equals(name))
     {
      flag = true;
      break;
     }
    }
    if(flag)
    {
     System.out.println(name+"已登录");
     out.println(name+"欢迎光临");
     break;
    }
    else
    {
     System.out.println(name+"尝试登录");
     out.println(name+"用户名不存在");
     break;
    }
   }
   s.close();
  }
  catch (Exception e)
  {
   throw new RuntimeException(ip+"校验失败");
  }
}
}
class  LoginServer
{
public static void main(String[] args) throws Exception
{
  ServerSocket ss = new ServerSocket(10008);
  while(true)
  {
   Socket s = ss.accept();
   new Thread(new UserThread(s)).start();
  }
}
}
没看出我代码哪里有问题啊,而且我创建的user.txt里面的确有Tom啊,为啥会出错呢?求解~~


2 个回复

正序浏览
刘基军 发表于 2012-4-18 18:31
if(flag)
    {
     System.out.println(name+"已登录");

解决了,谢谢
回复 使用道具 举报
if(flag)
    {
     System.out.println(name+"已登录");
     out.println(name+"欢迎光临");
     break;
    }
    else
    {
     System.out.println(name+"尝试登录");
     out.println(name+"用户名不存在");
     break;                                         //这边不应该使用:break语句,
    }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马