本文实例为大家分享了java客户端登陆服务器用户名验证的具体实现代码,供大家参考,具体内容如下
客户端通过键盘录入用户名,服务端对用户名进行验证。
如果用户名存在,服务端显示xxx已登录,客户端显示xxx,欢迎登陆。
如果用户名不存在,服务端显示xxx尝试登陆,客户端显示xxx,用户名不存在。
最多登陆三次,防止暴力登陆。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
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
以上就是本文的全部内容,希望对大家的学习有所帮助。