博客
关于我
客户端登陆服务器用户名验证
阅读量:542 次
发布时间:2019-03-07

本文共 3000 字,大约阅读时间需要 10 分钟。

Java验证登录系统优化方案

系统简介

这是一个基于Java语言开发的客户端-服务器验证登录系统,旨在通过键盘输入验证用户名并防止暴力登录。系统允许最多三次尝试登录,确保账号安全。

系统功能

  • 客户端:接收用户名并逐步验证
  • 服务器:根据用户名判断是否存在,如果存在返回欢迎信息,否则提示用户名不存在
  • 防止暴力登录:限制最多三次尝试

优化思路

  • 客户端实现

    • 使用Socket建立连接
    • 通过BufferedReader读取键盘输入
    • 允许用户最多三次尝试登录
  • 服务器端处理

    • 使用多线程处理客户端连接
    • 查找 username.txt 文件,验证是否存在
    • 返回相应提示信息
  • 安全性与用户体验

    • 设置三次登录限制
    • 提供清晰的提示信息
    • 用户友好的界面设计
  • 代码解读

    客户端代码:

    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()));                boolean flag = true;        for (int x = 0; x < 3; x++) {            String line = bufr.readLine();            if (line == null) break;                        pw.println(line);            pw.println(line);                        String info = bufin.readLine();            System.out.println("Server info: " + info);            if (info.contains("欢迎登陆")) flag = false;            if (!flag) break;        }                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);                boolean flag = false;                                while ((line = bufr.readLine()) != null) {                    if (line.equals(name)) {                        flag = true;                        break;                    }                }                                if (flag) {                    System.out.println(name + ":已登录");                    out.println(name + ":欢迎登陆");                    break;                } else {                    System.out.println(name + ":尝试登陆");                    out.println(name + ":用户名不存在");                }            }            s.close();        } catch (Exception e) {            throw new RuntimeException("验证失败");        }    }}class server {    public static void main(String[] args) throws Exception {        ServerSocket ss = new ServerSocket(10008);        while (true) {            Socket s = ss.accept();            new Thread(new ServerThread(s)).start();        }    }}

    系统优化

  • 代码清理:

    • 删除冗余代码
    • 简化异常处理
    • 优化读取方式
  • 性能提升:

    • 使用线程处理多个客户端
    • 读取本地文本文件实现用户验证
    • 提高数据传输效率
  • 安全性保障:

    • 限制登录次数
    • 验证用户名存在性
    • 提供友好的提示信息
  • 结论

    系统通过简化逻辑优化代码结构,实现了用户验证功能,同时提供良好的用户体验和安全防护,适用于大学校园网下的一般访问验证场景。

    转载地址:http://iypjz.baihongyu.com/

    你可能感兴趣的文章
    Python Selenium模块详解
    查看>>
    Python selenium爬取影评生成词云图
    查看>>
    python selenium自动化测试报告
    查看>>
    Python selenium自动化测试框架实战 —— 登录测试案例
    查看>>
    Python Selenium设计模式 —— POM
    查看>>
    Python Serial:如何使用 read 或 readline 函数一次读取多个字符
    查看>>
    Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
    查看>>
    Python setup.py:数据文件无法复制目录:不存在或不是常规文件
    查看>>
    Python setuptools sdist:仅安装版本化文件
    查看>>
    Python Shell下使用matplotlib
    查看>>
    Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
    查看>>
    python socket分包发送数据
    查看>>
    python socket模块_Python socket模块实现TCP服务端客户端
    查看>>
    Python SOCKS5代理客户端HTTPS
    查看>>
    Python Soc网络分析:通过使用函数迭代列表来计算机会网络
    查看>>
    Python SQL和NoSQL数据库操作实战
    查看>>
    python stdout flush_sys.stdout.flush()方法的用法
    查看>>
    python string 运算
    查看>>
    Python str与bytes之间的转换
    查看>>
    Python subprocess ffmpeg
    查看>>