天天看点

客户端登陆服务器用户名验证

/* 

客户端通过键盘录入用户名。 

服务端对用户名进行验证。 

如果用户名存在,服务端显示xxx已登录,客户端显示xxx,欢迎登陆。 

如果用户名不存在,服务端显示xxx尝试登陆,客户端显示xxx,用户名不存在。 

最多登陆三次,防止暴力登陆。 

*/  

import java.io.*;  

import java.net.*;  

*客户端 

class  client  

{  

    public static void main(string[] args) throws exception  

    {  

        socket s = new socket("192.168.33.1",10008);//建立服务  

        bufferedreader bufr = new bufferedreader(new inputstreamreader(system.in));//读取键盘输入用户名  

        printwriter pw = new printwriter(s.getoutputstream(),true);//读到数据往服务端写  

        bufferedreader bufin =   

            new bufferedreader(new inputstreamreader(s.getinputstream()));//将客户端返回的数据读入  

        for(int x = 0;x < 3; x ++)//只登陆3次设定  

        {  

            string line = bufr.readline();//读取用户名  

            pw.println(line);  

            if(line == null)//为空用户名终止  

                break;  

            string info = bufin.readline();//读取服务端返回的数据  

            system.out.println("server info:"+info);  

            if(info.contains("欢迎登陆"))//用户登录终止  

        }  

        bufr.close();  

        s.close();  

    }  

}  

*服务端 

class serverthread implements runnable  

    private socket s;  

    serverthread(socket s)  

        this.s = s;  

    public void run()  

        string ip = s.getinetaddress().gethostaddress();  

        system.out.println(ip+"...........connect");  

        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)//读取数据库(use.txt)中数据  

                {  

                    if(line.equals(name))//如果数据库和读取用户名相同,则终止  

                    {  

                        flag = true;  

                        break;  

                    }  

                }  

                if(flag)  

                        system.out.println(name+":已登录");  

                        out.println(name+":欢迎登陆");  

                else  

                    system.out.println(name+":尝试登陆");  

                    out.println(name+":用户名不存在");  

            }  

            s.close();  

        catch (exception e)  

            throw new runtimeexception("验证失败");  

class  server  

        serversocket ss = new serversocket(10008);//建立服务  

        while (true)  

            socket s = ss.accept();//接收客户端传来数据  

            new thread(new serverthread(s)).start();//开启线程  

打印结果:

客户端登陆服务器用户名验证

user.txt

客户端登陆服务器用户名验证

转载:http://blog.csdn.net/chaoyu168/article/details/49906145