博客
关于我
客户端登陆服务器用户名验证
阅读量: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 优化 or
查看>>
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>
MySQL 优化:Explain 执行计划详解
查看>>
Mysql 会导致锁表的语法
查看>>
mysql 使用sql文件恢复数据库
查看>>
mysql 修改默认字符集为utf8
查看>>
Mysql 共享锁
查看>>
MySQL 内核深度优化
查看>>
mysql 内连接、自然连接、外连接的区别
查看>>
mysql 写入慢优化
查看>>
mysql 分组统计SQL语句
查看>>
Mysql 分页
查看>>
Mysql 分页语句 Limit原理
查看>>
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>
mysql 多个表关联查询查询时间长的问题
查看>>