socket实现用户端 登录 服务器端 用户名验证

来源:互联网 发布:access 导入sqlserver 编辑:程序博客网 时间:2024/05/17 22:01

//客户端:

package 用户端服务器端登录验证;
import java.net.*;  
import java.io.*;  
class  LoginClient  
{  
    public static void main(String[] args)throws Exception   
    {  
        Socket s = new Socket("10.0.185.126",8888);  
        //读取键盘录入,获取用户名。  
        BufferedReader bufr =   
            new BufferedReader(new InputStreamReader(System.in));  
 
        //对socket输出流进行打印。将录入的用户名发送给服务端。  
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);  
 
        //对socket输入流中的数据进行获取,其实就是在获取服务端的回馈信息。  
        BufferedReader in =   
                new BufferedReader(new InputStreamReader(s.getInputStream()));  
 
        //客户端值允许录入三次。  
        for(int x=0; x<3; x++)  
        {  
            //从键盘读取一行。  
            String username = bufr.readLine();  
            if(username==null)  
            {  
                //s.shutdownOutput();  
                break;  
            }  
              
            //将该行数据打印到socket输出流。  
            out.println(username);  
 
            //获取服务端反馈信息。  
            String info = in.readLine();  
            System.out.println(info);  
            if(info.contains("欢迎"))  
                break;  
        }  
 
        bufr.close();  
        s.close();  
    }  

//服务器端(主函数):

package 用户端服务器端登录验证;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

class  LoginServer  
{  
    public static void main(String[] args) throws Exception  
    {  
        ServerSocket ss = new ServerSocket(8888);  
        while(true)  
        {  
            Socket s = ss.accept();  
            System.out.println(s.getInetAddress().getHostAddress()+".....connected");  
            new Thread(new UserThread(s)).start();  
        }  
    }  
}  
 
class UserThread implements Runnable  
{  
    private Socket s;  
    UserThread(Socket s)  
    {  
        this.s = s;  
    }  
    public void run()  
    {  
        try  
        {  
            for(int x=0; x<3; x++)  
            {  
                //判断用户名是否为空  
                BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));  
                String name = bufIn.readLine();  
                if(name==null)  
                {  
                    System.out.println("程序结束 ");  
                    break;  
                }  
 
                //匹配用户名并实现登陆  
                BufferedReader bufr = new BufferedReader(new FileReader("E:\\Eclipse\\Users\\workspace\\Self\\src\\用户端服务器端登录验证\\user.txt"));  
                String line = null;  
                PrintWriter out = new PrintWriter(s.getOutputStream(),true);  
                boolean b = false;  
                while((line=bufr.readLine())!=null)  
                {  
                    if(line.equals(name))  
                    {  
                        b = true;  
                        break;  
                    };                 
                }  
                if(b)  
                {  
                    System.out.println(name+"已登录");  
                    out.println(name+",欢迎光临");  
                }  
                else  
                {  
                    System.out.println(name+"尝试登录");  
                    out.println(name+",用户不存在");  
                }  
            }  
        }  
        catch (Exception e)  
        {  
            System.out.println(e.toString());  
        }  
        finally  
        {  
            try  
            {  
                if( s!=null)  
                    s.close();  
            }  
            catch (Exception e)  
            {  
                System.out.println("close:"+e.toString());  
            }  
              
        }  
    }  


user.txt

例:

lisi
admin

李四

0 0
原创粉丝点击