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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵阳 中级黑马   /  2012-8-31 08:17  /  1549 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邵阳 于 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之后出现上面的异常提示,找不出来错误。

1 个回复

倒序浏览
所有的代码都没有问题,原因在于shujuku.txt么有找到,劝你一句,不要把所有的代码都放到一个try块里,用IOException处理,
BufferedReader br=new BufferedReader(new FileReader(file)); 这句报出的是FileNotFoundException异常,所以你都不知道哪儿出问题啦,
你把shujuku.txt放到项目目录下就OK啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马