本文共 3000 字,大约阅读时间需要 10 分钟。
这是一个基于Java语言开发的客户端-服务器验证登录系统,旨在通过键盘输入验证用户名并防止暴力登录。系统允许最多三次尝试登录,确保账号安全。
客户端实现
Socket建立连接BufferedReader读取键盘输入服务器端处理
安全性与用户体验
客户端代码:
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/