黑马程序员技术交流社区

标题: 网络编程的疑问 [打印本页]

作者: 李敬卫    时间: 2013-1-19 15:25
标题: 网络编程的疑问
public class UserLoginSocket {
/**
  * @param args
  * @throws Exception
  * @throws UnknownHostException
  */
public static void main(String[] args) throws  Exception {
  // TODO Auto-generated method stub
  Socket s=new Socket("127.0.0.1",10009);
  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  PrintWriter out=new PrintWriter(s.getOutputStream());
  
  BufferedReader brin=new BufferedReader(new InputStreamReader(s.getInputStream()));
  for(int x=0;x<3;x++){
   String line=br.readLine();
   if(line.equals(null))
    break;
   out.println(line);
   
   String returnInfo=brin.readLine();
   System.out.println("服务端返回的信息是:"+returnInfo);
   if(returnInfo.contains("欢迎"))
    break;
  }
  br.close();
  s.close();
  }
}

public class UserLoginServer implements Runnable{
private Socket s;
public UserLoginServer(Socket s){
this.s=s;
}
@Override
public void run() {
  // TODO Auto-generated method stub
  String ip=s.getInetAddress().getHostAddress();
  System.out.println(ip+"........已连接上");

  try{
   for(int x=0;x<3;x++){
  
   BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
   String name=br.readLine();
   if(name==null)
    break;
   
   PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
   
   BufferedReader brFile=new BufferedReader(new FileReader("E:\\UserLogin.txt"));   
   String line=null;
   boolean flag=false;
   while((line=brFile.readLine())!=null){
    if(line.equals(name)){
     flag=true;
     break;
    }
   }
   if(flag){
    System.out.println(name+",已登录");
    pw.write(name+"欢迎光临");
   }else{
    System.out.println(name+",尝试登陆");
    pw.write(name+",用户名不存在");
   }
   }
   s.close();
  }catch(Exception e){
   throw new RuntimeException(ip+"校验失败");
  }
  
}
public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  ServerSocket ss=new ServerSocket(10009);
  while(true){
   Socket s=ss.accept();
   new Thread(new UserLoginServer(s)).start();
  }
}
}

请各位看一下这是什么原因?

作者: 朱玉玺    时间: 2013-1-19 17:55
  1. catch(Exception e){
  2.     throw new RuntimeException(ip+"校验失败");
  3.    }
复制代码
这是你自己定义的异常处理方法的结果

如果想看异常的具体信息,建议在抛出之前,先加个e.printStackTrace(),看看具体是哪一行出问题了。

作者: Rancho_Gump    时间: 2013-1-20 11:49
调试了下你的程序,{:soso__6235880048239246314_3:}
PrintWriter out=new PrintWriter(s.getOutputStream(),true); 此句少加true,println方法不能刷新  
服务器里的 倒是ture了 但用
pw.write(name+",用户名不存在"); 方法,不具备自动刷新





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