博客
关于我
客户端登陆服务器用户名验证
阅读量: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/

    你可能感兴趣的文章
    Openstack企业级云计算实战第二、三期培训即将开始
    查看>>
    OpenStack创建虚拟机实例实战
    查看>>
    OpenStack安装部署实战
    查看>>
    OpenStack实践系列⑨云硬盘服务Cinder
    查看>>
    OpenStack架构
    查看>>
    OpenStack版本升级与故障排查实战
    查看>>
    OpenStack的基本概念与架构详解
    查看>>
    Openstack的视频学习
    查看>>
    OpenStack自动化安装部署实战(附OpenStack实验环境)
    查看>>
    openstack虚拟机迁移live-migration中libvirt配置
    查看>>
    OpenStack项目管理实战
    查看>>
    OpenStreetMap初探(一)——了解OpenStreetMap
    查看>>
    openSUSE 13.1 Milestone 2 发布
    查看>>
    openSUSE推出独立 GUI 包管理工具:YQPkg,简化了整个软件包管理流程
    查看>>
    OpenVSwtich(OVS)Vlan间路由实战 附实验环境
    查看>>
    Openwrt LuCI模块练习详细步骤
    查看>>
    OpenWrt固件编译刷机完全总结
    查看>>
    Open××× for Linux搭建之二
    查看>>
    Open×××有线网络时使用正常,无线网络时使用报错的解决方案
    查看>>
    Operation not supported on read-only collection 的解决方法 - [Windows Phone开发技巧系列1]
    查看>>