博客
关于我
客户端登陆服务器用户名验证
阅读量: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 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>