黑马程序员技术交流社区

标题: 网络编程客户端和服务端的问题 [打印本页]

作者: 沫然    时间: 2014-4-7 21:13
标题: 网络编程客户端和服务端的问题
本帖最后由 沫然 于 2014-4-9 10:26 编辑

客户端通过键盘录入用户名。
服务端对这个用户名进行校验。

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

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

最多登录三次。

  1. import java.io.*;
  2. import java.net.*;

  3. class  LoginClient
  4. {
  5.         public static void main(String[] args) throws Exception
  6.         {
  7.                 Socket s = new Socket("192.168.1.100", 10008);

  8.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

  9.                 PrintWriter out = new PrintWriter(s.getOutputStream());

  10.                 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

  11.                 for (int x=0; x<3; x++)
  12.                 {
  13.                         String line = bufr.readLine();
  14.                         
  15.                         if(line==null)
  16.                                 break;
  17.                         out.println(line);

  18.                         String info = bufIn.readLine();

  19.                         System.out.println("info:"+info);
  20.                         if(info.contains("欢迎"))
  21.                                 break;
  22.                 }
  23.                 bufr.close();
  24.                 s.close();

  25.         }
  26. }

  27. class UserThread implements Runnable
  28. {
  29.         private Socket s;
  30.         UserThread(Socket s)
  31.         {
  32.                 this.s = s;
  33.         }
  34.         public void run()
  35.         {
  36.                 String ip = s.getInetAddress().getHostAddress();
  37.                 System.out.println(ip+"......connected");
  38.                 try
  39.                 {
  40.                         for (int x=0; x<3; x++)
  41.                         {
  42.                                 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

  43.                                 String name = bufIn.readLine();
  44.                                 if(name==null)
  45.                                         break;

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

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

  48.                                 String line = null;

  49.                                 boolean flag = false;
  50.                                 while ((line=bufr.readLine())!=null)
  51.                                 {
  52.                                         if(line.equals(name))
  53.                                         {
  54.                                                 flag = true;
  55.                                                 break;
  56.                                         }
  57.                                 }
  58.                                 
  59.                                 if (flag)
  60.                                 {
  61.                                         System.out.println(name+",已登录");
  62.                                         out.println(name+",欢迎光临");
  63.                                         break;
  64.                                 }
  65.                                 else
  66.                                 {
  67.                                         System.out.println(name+",尝试登录");
  68.                                         out.println(name+",用户名不存在");
  69.                                 }
  70.                                 
  71.                         }
  72.                         s.close();
  73.                 }
  74.                 catch (Exception e)
  75.                 {
  76.                         throw new RuntimeException(ip+"校验失败");
  77.                 }
  78.         }
  79. }

  80. class LoginServer
  81. {
  82.         public static void main(String[] args) throws Exception
  83.         {
  84.                 ServerSocket ss= new ServerSocket(10008);

  85.                 while (true)
  86.                 {
  87.                         Socket s = ss.accept();

  88.                         new Thread(new UserThread(s)).start();
  89.                 }

  90.         }
  91. }
复制代码

这段代码哪里出问题了 ?






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