黑马程序员技术交流社区
标题:
客户端并发登陆
[打印本页]
作者:
邵阳
时间:
2012-8-31 08:17
标题:
客户端并发登陆
本帖最后由 邵阳 于 2012-8-31 08:20 编辑
/*
客户端通过键盘录入用户名。
服务端对这个用户名进行校验。
如果该用户存在,在服务端显示***,已登录。
并在客户端显示**,欢迎光临。
如果该用户存在,在服务端显示***,尝试登陆。
并在客户端显示***,该用户不存在。
*/
import java.net.*;
import java.io.*;
class ClientTcp
{
public static void main(String[]args)throws Exception
{
Socket s=new Socket("172.16.44.121",10012);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pwOut=new PrintWriter(s.getOutputStream(),true);
BufferedReader brIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int i=0;i<3 ;i++ )
{
String s1=br.readLine();
//if(s1==null)
//break; //这里我给注释了
pwOut.println(s1);
String s2=brIn.readLine();
System.out.println(s2);
if(s2.endsWith("欢迎光临"))
break;
}
br.close();
s.close();
}
}
class MyServer implements Runnable
{
private Socket s;
MyServer(Socket s)
{
this.s=s;
}
public void run()
{
try
{
for(int i=0;i<3;i++)
{
BufferedReader brIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
String s1=brIn.readLine();
if(s1==null)
break;
PrintWriter pwOut=new PrintWriter(s.getOutputStream(),true);
File file=new File("shujuku.txt");
BufferedReader br=new BufferedReader(new FileReader(file));
String s2=null;
boolean boo=true;
while ((s2=br.readLine())!=null)
{
if (s2.equals(s1))
{
boo=false;
System.out.println("服务端显示:"+s1+",已登录");
pwOut.println("客户端显示:"+s1+",欢迎光临");
break;
}
}
if (boo==true)
{
System.out.println("服务端显示:"+s1+",尝试登录");
pwOut.println("客户端显示:"+s1+",该用户不存在");
}
else
break;
}
s.close();
}
catch (Exception e)
{
throw new RuntimeException("登陆失败");
}
}
}
class ServerTcp
{
public static void main(String[]args)throws Exception
{
ServerSocket ss=new ServerSocket(10012);
while (true)
{
Socket s=ss.accept();
new Thread(new MyServer(s)).start();
}
}
}
结果是
D:\java\zuoye\wangluo_biancheng>java ServerTcp
服务端显示:null,尝试登录
Exception in thread "Thread-0" java.lang.RuntimeException: 登陆失败
at MyServer.run(tcp_denglu.java:83)
at java.lang.Thread.run(Thread.java:722)
我为了做实验,就将上面注释了,摁Ctrl+c之后出现上面的异常提示,找不出来错误。
作者:
袁艳超
时间:
2012-8-31 13:30
所有的代码都没有问题,原因在于shujuku.txt么有找到,劝你一句,不要把所有的代码都放到一个try块里,用IOException处理,
BufferedReader br=new BufferedReader(new FileReader(file)); 这句报出的是FileNotFoundException异常,所以你都不知道哪儿出问题啦,
你把shujuku.txt放到项目目录下就OK啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2