大家给看一下,代码错在哪里了?user.txt文件里的内容是:yellowxiaotian
yuanfengmei
为什么我的客户端只能输入一次,第一次输入错的用户名,第二次再输入错的用户名或着正确的用户名,就会抛出这个异常
/*
客户端通过键盘录入用户名。
服务端对这个用户名进行校验
如果该用户存在,在服务器上显示xxx,已登录
并在客户端显示xxx,欢迎光临
如果该用户不存在,在服务器端显示xxx,尝试登录。
并在客户端显示xxx,该用户不存在。
最多尝试登录三次。
*/
import java.net.*;
import java.io.*;
class LoginClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("127.0.0.1",10006);
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);
System.out.println(line);
String info =bufIn.readLine();
System.out.println("info:"+info);
if(info.contains("欢迎"))
break;
}
bufr.close();
s.close();
}
}
class LoginServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10006);
while(true)
{
Socket s = ss.accept();
new Thread(new UserThread(s)).start();
}
}
}
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+"..........connected");
try
{
for(int x=0;x<3;x++)
{
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String name = bufIn.readLine();
if(name==null)
break;
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)
{
new RuntimeException(e.toString());
}
}
}
该贴已经同步到 黄晓天的微博 |