博客
关于我
客户端登陆服务器用户名验证
阅读量: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中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>