博客
关于我
客户端登陆服务器用户名验证
阅读量: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 利用pyttsx3文字转语音
    查看>>
    python 利用已有Ner模型进行数据清洗合并
    查看>>
    python 到大数据开发工程师_如何成为一个大数据开发工程师?
    查看>>
    python 加密解密(base64, AES)
    查看>>
    Python 包管理器和 Node.js
    查看>>
    Python 单词字母顺序不变且所有倒排
    查看>>
    python 反射机制
    查看>>
    python 启动提示IDLE's subprocess didn't make conne...
    查看>>
    python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
    查看>>
    Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
    查看>>
    Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
    查看>>
    python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
    查看>>
    python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
    查看>>
    Python 和Java 哪个更适合做自动化测试?
    查看>>
    Python编程:掌握高级语言程序设计。从零基础到精通,收藏这篇就够了!
    查看>>
    python 图片转ico
    查看>>
    python 图片转文字、语音转文字、文字转语音保存音频并朗读
    查看>>
    python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
    查看>>
    Python 在并行进程之间共享字典
    查看>>
    Python 垃圾收集器文档
    查看>>