黑马程序员——java net客户端登陆演示

本文介绍了一个使用Java实现的简单网络登录验证示例。客户端通过键盘输入用户名,服务器端进行验证并反馈结果。该示例展示了如何使用Socket进行客户端和服务端的通信,并通过文件读取来验证用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

客户端通过键盘录入用户名。

服务端对这个用户名进行校验。

 

如果该用户存在,在服务端显示xxx,已登陆。

并在客户端显示 xxx,欢迎光临。

 

如果该用户不存在,在服务端显示xxx,尝试登陆。

并在客户端显示 xxx,该用户不存在。

 

最多就登录三次。

*/

import java.io.*;

import java.net.*;

 

 

class  LoginClient

{

    public static void main(String[] args) throws Exception

    {

       Socket s = new Socket("192.168.1.254",10008);

 

       BufferedReader bufr =

           new BufferedReader(new InputStreamReader(System.in));

 

       PrintWriter out = new PrintWriter(s.getOutputStream(),true);

 

       BufferedReader bufIn =

           new BufferedReader(new InputStreamReader(s.getInputStream()));

 

 

       for(int x=0; x<3; x++)

       {

           String line = bufr.readLine();

           if(line==null)

              break;

           out.println(line);

 

           String info = bufIn.readLine();

           System.out.println("info:"+info);

           if(info.contains("欢迎"))

              break;

 

       }

 

       bufr.close();

       s.close();

    }

}

 

 

class UserThread implements Runnable

{

    private Socket s;

    UserThread(Socket s)

    {

       this.s = s;

    }

    public void run()

    {

       String ip = s.getInetAddress().getHostAddress();

       System.out.println(ip+"....connected");

       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)

              {

                  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(ip+"校验失败");

       }

    }

}

class  LoginServer

{

    public static void main(String[] args) throws Exception

    {

       ServerSocket ss = new ServerSocket(10008);

 

       while(true)

       {

           Socket s = ss.accept();

 

           new Thread(new UserThread(s)).start();

       }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值