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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 盛亚昆 中级黑马   /  2012-4-16 16:25  /  1344 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
import java.net.*;
class kefu
{
public static void main(String[] args)throws Exception
{
  Socket s=new Socket("127.0.0.1",10003);
  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+"已连接");
  try
  {
   for (int x=0;x<3;x++)
   {
    BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
   
    String name=bufIn.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 (flag)
    {
     System.out.println(name+"  已登录");
     out.println(name+",欢迎光临");
     break;
    }
    else
    {
     System.out.println(name+"  尝试登陆");
     out.println(name+",用户名不存在");
   
    }
   }
   s.close();
  }
  catch (Exception e)
  {
   throw new RuntimeException("校验失败");
  }
}

}
class fuwu
{
public static void main(String[] args) throws Exception
{
  ServerSocket ss=new ServerSocket(10003);
  while(true)
  {
   Socket s=ss.accept();
   new Thread(new UserThread(s)).start();
  
  }
}
}
运行结果 如下
D:\java0217\day23>javac denglu.java
D:\java0217\day23>java fuwu
127.0.0.1已连接
haha  尝试登陆
null  尝试登陆//这里的空是因为回车吗,怎么解决啊 ???高手指点啊
null  尝试登陆
D:\java0217\day23>java kefu
haha
info:haha,用户名不存在
D:\java0217\day23>
这里怎么就停止了啊 ???高手指点

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

4 个回复

倒序浏览
  1. for (int x=0;x<3;x++)
  2.                         {
  3.                                 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

  4.                                 String name = bufIn.readLine();
  5.                                 if(name==null)//这里你要判断一下。视频里有讲的。
  6.                                         break;

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

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

  9.                                 String line = null;
复制代码

  1.                 for (int x=0; x<3; x++)
  2.                 {
  3.                         String line = bufr.readLine();
  4.                         if (line==null)
  5.                                 break;
  6.                         out.println(line);

  7.                         String info = bufIn.readLine();
  8.                         System.out.println("info:"+info);
  9.                         if(info.contains("欢迎"));//就这个小分号惹的祸。
  10.                                 break;
  11.                 }
复制代码
回复 使用道具 举报
null表示的就是你输入了回车,至于程序停止运行,你看好了,客户端的Socket流输出和接受都是在for循环里,循环都已经被限定次数3次了,无论登陆成功还是失败就只能登陆3次
回复 使用道具 举报
都是逗分号惹得祸啊 谢谢 指点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马