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

简介:
[java]  view plain  copy
 print ?
  1. /* 
  2. 客户端通过键盘录入用户名。 
  3. 服务端对用户名进行验证。 
  4.  
  5. 如果用户名存在,服务端显示xxx已登录,客户端显示xxx,欢迎登陆。 
  6. 如果用户名不存在,服务端显示xxx尝试登陆,客户端显示xxx,用户名不存在。 
  7.  
  8. 最多登陆三次,防止暴力登陆。 
  9. */  
  10. import java.io.*;  
  11. import java.net.*;  
  12. /* 
  13. *客户端 
  14. */  
  15. class  client  
  16. {  
  17.     public static void main(String[] args) throws Exception  
  18.     {  
  19.         Socket s = new Socket("192.168.33.1",10008);//建立服务  
  20.         BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//读取键盘输入用户名  
  21.         PrintWriter pw = new PrintWriter(s.getOutputStream(),true);//读到数据往服务端写  
  22.         BufferedReader bufin =   
  23.             new BufferedReader(new InputStreamReader(s.getInputStream()));//将客户端返回的数据读入  
  24.         for(int x = 0;x < 3; x ++)//只登陆3次设定  
  25.         {  
  26.             String line = bufr.readLine();//读取用户名  
  27.             pw.println(line);  
  28.             if(line == null)//为空用户名终止  
  29.                 break;  
  30.             pw.println(line);  
  31.             String info = bufin.readLine();//读取服务端返回的数据  
  32.             System.out.println("Server info:"+info);  
  33.             if(info.contains("欢迎登陆"))//用户登录终止  
  34.                 break;  
  35.         }  
  36.         bufr.close();  
  37.         s.close();  
  38.     }  
  39. }  
  40. /* 
  41. *服务端 
  42. */  
  43. class ServerThread implements Runnable  
  44. {  
  45.     private Socket s;  
  46.     ServerThread(Socket s)  
  47.     {  
  48.         this.s = s;  
  49.     }  
  50.     public void run()  
  51.     {  
  52.         String ip = s.getInetAddress().getHostAddress();  
  53.         System.out.println(ip+"...........connect");  
  54.         try  
  55.         {  
  56.             for(int x = 0;x < 3;x ++)  
  57.             {  
  58.                 BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));//读取客户端发送的数据  
  59.                 String name = bufin.readLine();  
  60.                 if(name == null)  
  61.                     break;  
  62.                 BufferedReader bufr = new BufferedReader(new FileReader("user.txt"));//读取已存入用户账户,本来是读取数据库,这里方便就写了一个文本  
  63.                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);//写入流,服务端写出  
  64.                 String line = null;  
  65.                 boolean flag = false;//判断标记  
  66.                 while((line = bufr.readLine())!= null)//读取数据库(Use.txt)中数据  
  67.                 {  
  68.                     if(line.equals(name))//如果数据库和读取用户名相同,则终止  
  69.                     {  
  70.                         flag = true;  
  71.                         break;  
  72.                     }  
  73.                 }  
  74.                 if(flag)  
  75.                     {  
  76.                         System.out.println(name+":已登录");  
  77.                         out.println(name+":欢迎登陆");  
  78.                         break;  
  79.                     }  
  80.                 else  
  81.                 {  
  82.                     System.out.println(name+":尝试登陆");  
  83.                     out.println(name+":用户名不存在");  
  84.                 }  
  85.             }  
  86.             s.close();  
  87.         }  
  88.         catch (Exception e)  
  89.         {  
  90.             throw new RuntimeException("验证失败");  
  91.         }  
  92.     }  
  93. }  
  94. class  server  
  95. {  
  96.     public static void main(String[] args) throws Exception  
  97.     {  
  98.         ServerSocket ss = new ServerSocket(10008);//建立服务  
  99.         while (true)  
  100.         {  
  101.             Socket s = ss.accept();//接收客户端传来数据  
  102.             new Thread(new ServerThread(s)).start();//开启线程  
  103.         }  
  104.     }  
  105. }  

打印结果:

user.txt


转载:http://blog.csdn.net/chaoyu168/article/details/49906145

目录
相关文章
|
12天前
|
消息中间件 安全 Unix
SSH配置多台服务器之间的免密登陆以及登陆别名
SSH配置多台服务器之间的免密登陆以及登陆别名
22 1
|
2月前
|
消息中间件 运维 网络协议
客户端和服务器之间的通信
客户端和服务器之间的通信
32 0
|
2月前
|
监控 关系型数据库 Linux
|
17天前
|
网络协议 Python
pythonTCP客户端编程连接服务器
【4月更文挑战第6天】本教程介绍了TCP客户端如何连接服务器,包括指定服务器IP和端口、发送连接请求、处理异常、进行数据传输及关闭连接。在Python中,使用`socket`模块创建Socket对象,然后通过`connect()`方法尝试连接服务器 `(server_ip, server_port)`。成功连接后,利用`send()`和`recv()`进行数据交互,记得在通信完成后调用`close()`关闭连接,确保资源释放和程序稳定性。
|
2月前
|
网络协议 Java API
【JavaEE初阶】 TCP服务器与客户端的搭建
【JavaEE初阶】 TCP服务器与客户端的搭建
|
2月前
|
自然语言处理 Java 编译器
【JavaEE初阶】 UDP服务器与客户端的搭建
【JavaEE初阶】 UDP服务器与客户端的搭建
|
2月前
|
安全 Shell 网络安全
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
130 0
|
30天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
417 4
|
1月前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云的活动购买完云服务器之后,并不是立马就能使用了,还需要我们设置云服务器密码,配置安全组等基本操作之后才能使用,有的用户还需要购买并挂载数据盘到云服务器上,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程