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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘圣繁 中级黑马   /  2013-2-22 00:18  /  1229 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.net.*;
import java.io.*;
import java.lang.Thread;
class LoginClient
{
public static void main(String[]args)throws Exception
{
Socket  st=new Socket("192.168.0.2",10002);
BufferedReader bur=null;
try{
PrintWriter out=new PrintWriter(st.getOutputStream(),true);
bur=new BufferedReader(new InputStreamReader(System.in));
BufferedReader buw=new BufferedReader(new InputStreamReader(st.getInputStream()));
for(int i=0;i<3;i++)
{
String name=bur.readLine();
if(name==null)//难道直接输入回车  name不是null吗
{
System.out.println("请输入用户名");//第二个问题:当客户端什么也不输入 直接输入回车  客户端没有执行预定的代码   即提示:请输入用户名
continue;
}
out.println(name);
String line=buw.readLine();
System.out.println(line);
if(line.contains("欢迎"))
break;
}
}
catch(IOException e){e.printStackTrace();}
finally{
try{
bur.close();
st.close();
}
catch(IOException e){e.printStackTrace();}
}
}
}
class ThreadLogin implements Runnable
{
private Socket st=null;
ThreadLogin(Socket st)
{
this.st=st;
}
public void run()
{
String ip=st.getInetAddress().getHostAddress();
BufferedReader bur=null;
System.out.println(ip+"--------------请求连接服务器");
try{
bur=new BufferedReader(new FileReader("user.txt"));
PrintWriter out=new PrintWriter(st.getOutputStream(),true);
BufferedReader burr=new BufferedReader(new InputStreamReader(st.getInputStream()));
boolean flag=false;
String userName=null;
String name=null;
for(int i=0;i<3;i++)
{
name=burr.readLine();
if(name==null)
break;
while((userName=bur.readLine())!=null)
{
if(userName.equals(name))
{
flag=true;
break;
}
}
if(!flag)
{
System.out.println("注意注意"+name+"正在尝试登陆!");
out.println("用户名错误,请重新登录");
}
else
{
out.println("欢迎"+userName+"登录");
System.out.println(userName+"已经成功登录");
break;
}
}
}
catch(IOException e){ e.printStackTrace();}
finally{
try
{
st.close();
bur.close();
}
catch(IOException e){e.printStackTrace();}
}
}
}
class LoginServer
{
public static void main(String[]args)
{
try{
ServerSocket st=new ServerSocket(10002);
while(true)
{
Socket ss=st.accept();
new Thread(new ThreadLogin(ss)).start();
}
}
catch(IOException e){e.printStackTrace();}
}
}
程序存在两个问题::::::
第一:当第一次输入错误用户名了以后   第二次第三次即使输入正确了也进不去
第二:当客户端什么也不输入 直接输入回车  客户端没有执行预定的代码   即提示:请重新输入
           难道直接输入回车  name不是null吗

4 个回复

倒序浏览
回车 在windows里面好像是\r\n     所以应该不是空。  
回复 使用道具 举报
本帖最后由 李光耀 于 2013-2-22 09:49 编辑

占个座吧。。
回复 使用道具 举报
兄弟,麻烦先把代码重新编排一下吧,好晕哦~
回复 使用道具 举报
if(name==null)//难道直接输入回车  name不是null吗
{
System.out.println("请输入用户名");//第二个问题:当客户端什么也不输入 直接输入回车  客户端没有执行预定的代码   即提示:请输入用户名
continue;//此处应该是break
视频里说的很详细了,我就不多说了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马