java客户端登陆服务器用户名验证

本文实例为大家分享了java客户端登陆服务器用户名验证的具体实现代码,供大家参考,具体内容如下

客户端通过键盘录入用户名,服务端对用户名进行验证。 

如果用户名存在,服务端显示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

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是 java客户端登陆服务器用户名验证 的全部内容, 来源链接: utcz.com/p/209996.html

回到顶部