zoukankan      html  css  js  c++  java
  • 多用户登录

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Properties;
    
    public class LoginServer extends Thread {
    
        Socket socket;
    
        static File file = new File("F:\users.properties");
    
        public LoginServer(Socket socket) {
            this.socket = socket;
        }
    
        static {
            try {
                if (!file.exists()) {
                    file.createNewFile();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        @Override
        public void run() {
        while(true){
                
                try {
                    // 获取socket的输入流对象
                    BufferedReader bufferedReader = new BufferedReader(
                            new InputStreamReader(socket.getInputStream()));
                    // 获取socket的输出流对象
                    OutputStreamWriter socketOut = new OutputStreamWriter(
                            socket.getOutputStream());
        
                    // 读取客户端输入的信息
                    String info = bufferedReader.readLine();
                    String[] datas = info.split(" ");
                    // 获取到用户 的选择功能
                    String option = datas[0];
                    // 注册
                    String userName = datas[1];
        
                    String password = datas[2];
        
                    if ("a".equalsIgnoreCase(option)) {
                        // 登陆
                        Properties properties = new Properties();
                        // 加载配置文件
                        properties.load(new FileReader(file));
                        if (properties.containsKey(userName)) {
                            String tempPass = properties.getProperty(userName);
                            if (password.equals(tempPass)) {
                                socketOut.write("欢迎" + userName + "登陆成功
    ");
        
                            } else {
                                socketOut.write("密码错误
    ");
                            }
        
                        } else {
                            socketOut.write("用户名不存在,请重新输入...
    ");
                        }
        
                        socketOut.flush();
        
                    } else if ("b".equalsIgnoreCase(option)) {
        
                        // 创建一个配置文件类
                        Properties properties = new Properties();
                        //加载原来的配置文件
                        properties.load(new FileReader(file));
                        if (!properties.containsKey(userName)) {
                            // 不存在该用户名
                            properties.setProperty(userName, password);
                            // 生成一个配置文件
                            properties.store(new FileWriter(file), "users");
                            socketOut.write("注册成功..
    ");
                        } else {
                            // 存在用户名
                            socketOut.write("用户名已经被注册,请重新输入
    ");
                        }
                        socketOut.flush();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
        }
    
        public static void main(String[] args) throws IOException {
            ServerSocket serverSocket = new ServerSocket(9090);
            while (true) {
                Socket socket = serverSocket.accept();
                new LoginServer(socket).start();
            }
    
        }
    
    }
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    
    
    /*
    2.  实现登陆与注册 功能。  
        客户端与服务端连接的时候,就要提示客户端请选择功能。
        
        客户端注册的时候,用户名与密码都是发送给服务端 的,服务端需要把数据保存到服务端的文件上。
        
        登陆: 登陆的时候客户端输入用户名与密码发送给服务端,服务端需要校验,返回结果给客户端。
    */
    
    public class LoginClinet {
        
        public static void main(String[] args) throws IOException {        
            Socket socket = new Socket(InetAddress.getLocalHost(),9090);
            //获取socket的输出流对象
            OutputStreamWriter  socketOut = new OutputStreamWriter(socket.getOutputStream());
            
            //获取到socket的输入流对象
            BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            
            //获取到键盘的输入流对象
            BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));
            while(true){
                System.out.println("请选择功能: A(登陆)  B(注册)");
                String option = keyReader.readLine();
                if("a".equalsIgnoreCase(option)){
                    getInfo(socketOut, keyReader, option);
                    //读取服务器反馈的信息
                    String line = socketReader.readLine();
                    System.out.println(line);
                }else if("b".equalsIgnoreCase(option)){
                    getInfo(socketOut, keyReader, option);
                    //读取服务器反馈的信息
                    String line = socketReader.readLine();
                    System.out.println(line);
                }
    
            }
            
            
        }
    
        public static void getInfo(OutputStreamWriter  socketOut,BufferedReader keyReader, String option)
                throws IOException {
            System.out.println("请输入用户名:");
            String userName = keyReader.readLine();
            System.out.println("请输入密码:");
            String password = keyReader.readLine();
            String info = option +" "+userName+" "+password+"
    ";
            socketOut.write(info);
            socketOut.flush();
        }
        
    }
  • 相关阅读:
    xcode多target管理不同的环境(pod多target配置)
    OC与swift混编 #import "项目名-Swift.h"失效问题
    令人困惑的strtotime
    krpano 学习第一天
    git 全量同步分支
    MYSQL 什么时候用单列索引?什么使用用联合索引?
    _blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} pip
    Mac php 装imagick扩展 菜鸟教程
    git仓库搬家
    文章简介 字符串截取
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6426430.html
Copyright © 2011-2022 走看看