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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高丽华 中级黑马   /  2014-1-14 13:24  /  930 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. <p>import java.net.*;
  2. import java.io.*;
  3. class SocketLogin
  4. {
  5.         public static void main(String[] args) throws Exception
  6.         {
  7.                 Socket s=new Socket("127.0.0.1",10009);

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

  9.                 PrintWriter out=new PrintWriter(s.getOutputStream());
  10.                
  11.                 BufferedReader bufrin=new BufferedReader(new InputStreamReader(s.getInputStream()));

  12.                 for (int x=0;x<3;x++)
  13.                 {
  14.                         String line=bufr.readLine();

  15.                         if(line==null)
  16.                                 break;
  17.                         out.println(line);

  18.                         String info=bufrin.readLine();
  19.                         System.out.println("info:"+info);
  20.                         if(info.contains("欢迎"))
  21.                                 break;
  22.                        
  23.                 }
  24.                 bufr.close();
  25.                 s.close();
  26.         }
  27. }
  28. class ServerSocketLogin
  29. {
  30.         public static void main(String[] args)throws Exception
  31.         {
  32.                 ServerSocket ss=new ServerSocket(10009);
  33.                 while(true)
  34.                 {
  35.                         Socket s=ss.accept();
  36.                         new Thread(new LoginThread(s)).start();
  37.                 }
  38.         }
  39. }
  40. class LoginThread implements Runnable
  41. {
  42.         private Socket s;
  43.         LoginThread(Socket s)
  44.         {
  45.                 this.s=s;
  46.         }
  47.         public void run()
  48.         {
  49.                 String ip=s.getInetAddress().getHostAddress();
  50.                 System.out.println(ip+"......connected");
  51.                
  52.                 try
  53.                 {
  54.                         for (int x=0;x<3 ;x++ )
  55.                         {
  56.                                 BufferedReader bufrin=new BufferedReader(new InputStreamReader(s.getInputStream()));
  57.                                 String name=bufrin.readLine();
  58.                                 BufferedReader bufr=new BufferedReader(new FileReader("user.txt"));
  59.                                 PrintWriter out=new PrintWriter(s.getOutputStream(),true);
  60.                                 String line=null;
  61.                                 boolean flag=false;
  62.                                 while ((line=bufr.readLine())!=null)
  63.                                 {
  64.                                         if(line.equals(name))
  65.                                         {
  66.                                                 flag=true;
  67.                                                 break;
  68.                                         }
  69.                                 }
  70.                                 if (false)
  71.                                 {
  72.                                         System.out.println(name+",已登陆");
  73.                                         out.println(name+",欢迎光临");</p><p> }
  74.                                 else
  75.                                 {
  76.                                         System.out.println(name+",尝试登录");
  77.                                         out.println(name+",用户名不存在");
  78. }
  79. }
  80.                         s.close();
  81.                 }
  82.                 catch (Exception e)
  83.                 {
  84.                         throw new RuntimeException(ip+"校验失败");
  85.                 }
  86.         }
  87. }</p><p>为什么运行不了,纠结呀!!</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
研究了一下你的代码,两个问题。
第一个 读取完客户端输入的信息后,并没有刷新流,导致服务端没有收到数据。
解决办法 在第22行后加上out.flush();
第二个 第75行 if(false)是什么意思?我猜你是想判断定义的flag标记是否为真吧?
解决办法 把if(false)改成 if(flag)


完整代码给你重发一下
  1. import java.net.*;
  2. import java.io.*;
  3. class SocketLogin
  4. {
  5.         public static void main(String[] args) throws Exception
  6.         {
  7.                 Socket s=new Socket("127.0.0.1",10009);

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

  9.                 PrintWriter out=new PrintWriter(s.getOutputStream());
  10.                
  11.                 BufferedReader bufrin=new BufferedReader(new InputStreamReader(s.getInputStream()));

  12.                 for (int x=0;x<3;x++)
  13.                 {
  14.                         String line=bufr.readLine();

  15.                         if(line==null)
  16.                                 break;
  17.                         out.println(line);
  18.                                                 out.flush();
  19.                         String info=bufrin.readLine();
  20.                         System.out.println("info:"+info);
  21.                         if(info.contains("欢迎"))
  22.                                 break;
  23.                         
  24.                 }
  25.                 bufr.close();
  26.                 s.close();
  27.         }
  28. }








  29. class ServerSocketLogin
  30. {
  31.         public static void main(String[] args)throws Exception
  32.         {
  33.                 ServerSocket ss=new ServerSocket(10009);
  34.                 while(true)
  35.                 {
  36.                         Socket s=ss.accept();
  37.                         new Thread(new LoginThread(s)).start();
  38.                 }
  39.         }
  40. }



  41. class LoginThread implements Runnable
  42. {
  43.         private Socket s;
  44.         LoginThread(Socket s)
  45.         {
  46.                 this.s=s;
  47.         }
  48.         public void run()
  49.         {
  50.                 String ip=s.getInetAddress().getHostAddress();
  51.                 System.out.println(ip+"......connected");
  52.                 try
  53.                 {
  54.                         for (int x=0;x<3 ;x++ )
  55.                         {
  56.                                 BufferedReader bufrin=new BufferedReader(new InputStreamReader(s.getInputStream()));
  57.                                 String name=bufrin.readLine();
  58.                                 BufferedReader bufr=new BufferedReader(new FileReader("user.txt"));
  59.                                 PrintWriter out=new PrintWriter(s.getOutputStream(),true);
  60.                                 String line=null;
  61.                                 boolean flag=false;
  62.                                 while ((line=bufr.readLine())!=null)
  63.                                 {
  64.                                                                         System.out.println("line="+line);
  65.                                         if(line.equals(name))
  66.                                         {
  67.                                                 flag=true;
  68.                                                 break;
  69.                                         }
  70.                                 }
  71.                                 if (flag)
  72.                                 {
  73.                                         System.out.println(name+",已登陆");
  74.                                         out.println(name+",欢迎光临");
  75.                                                                                 return;
  76.                                                                                 }
  77.                                 else
  78.                                 {
  79.                                         System.out.println(name+",尝试登录");
  80.                                         out.println(name+",用户名不存在");
  81. }
  82. }
  83.                         s.close();
  84.                 }
  85.                 catch (Exception e)
  86.                 {
  87.                         throw new RuntimeException(ip+"校验失败");
  88.                 }
  89.         }
  90. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 很给力!

查看全部评分

回复 使用道具 举报
能成功就怪了,你这写了个if(false)怎么可能进得去判断? 用if(flag)啊!!!!!
  1.   if (false)
  2.                                 {
  3.                                         System.out.println(name+",已登陆");
  4.                                         out.println(name+",欢迎光临"); }
  5.                                 else
  6.                                 {
  7.                                         System.out.println(name+",尝试登录");
  8.                                         out.println(name+",用户名不存在");
  9.                                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class SocketLogin
{
        public static void main(String[] args) throws Exception
        {
                Socket s=new Socket("127.0.0.1",10009);

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

                PrintWriter out=new PrintWriter(s.getOutputStream());
               
                BufferedReader bufrin=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=bufrin.readLine();
                        System.out.println("info:"+info);
                        if(info.contains("欢迎"))
                                break;
                       
                }
                bufr.close();
                s.close();
        }
}
class ServerSocketLogin
{
        public static void main(String[] args)throws Exception
        {
                ServerSocket ss=new ServerSocket(10009);
                while(true)
                {
                        Socket s=ss.accept();
                        new Thread(new LoginThread(s)).start();
                }
        }
}
class LoginThread implements Runnable
{
        private Socket s;
        LoginThread(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 bufrin=new BufferedReader(new InputStreamReader(s.getInputStream()));
                                String name=bufrin.readLine();
                                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 (false)
                                {
                                        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+"校验失败");
                }
        }
}
是不是这两处少了break,我这个程序,你运行试试

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马