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

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

/*客户端通过键盘录入用户名。服务端对用户名进行验证。如果用户名存在,服务端显示xxx已登录,客户端显示xxx,欢迎登陆。如果用户名不存在,服务端显示xxx尝试登陆,客户端显示xxx,用户名不存在。最多登陆三次,防止暴力登陆。*/import java.io.*;import java.net.*;/**客户端*/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()));//将客户端返回的数据读入		for(int x = 0;x < 3; x ++)//只登陆3次设定		{			String line = bufr.readLine();//读取用户名			pw.println(line);			if(line == null)//为空用户名终止				break;			pw.println(line);			String info = bufin.readLine();//读取服务端返回的数据			System.out.println("Server info:"+info);			if(info.contains("欢迎登陆"))//用户登录终止				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);//写入流,服务端写出				String line = null;				boolean flag = false;//判断标记				while((line = bufr.readLine())!= null)//读取数据库(Use.txt)中数据				{					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();//开启线程		}	}}

打印结果:

user.txt

你可能感兴趣的文章
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>
MySQL 添加索引,删除索引及其用法
查看>>
MySQL 用 limit 为什么会影响性能?
查看>>
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>