天天看點

用戶端登陸伺服器使用者名驗證

/* 

用戶端通過鍵盤錄入使用者名。 

服務端對使用者名進行驗證。 

如果使用者名存在,服務端顯示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