博客
关于我
客户端登陆服务器用户名验证
阅读量: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

你可能感兴趣的文章
msbuild发布web应用程序
查看>>
MSB与LSB
查看>>
MSCRM调用外部JS文件
查看>>
MSCRM调用外部JS文件
查看>>
MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
查看>>
MsEdgeTTS开源项目使用教程
查看>>
msf
查看>>
MSSQL数据库查询优化(一)
查看>>
MSSQL日期格式转换函数(使用CONVERT)
查看>>
MSTP多生成树协议(第二课)
查看>>
MSTP是什么?有哪些专有名词?
查看>>
Mstsc 远程桌面链接 And 网络映射
查看>>
Myeclipse常用快捷键
查看>>
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
myeclipse配置springmvc教程
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>