利用Tcp通信模式实现登陆验证(单线程)

Client客户端
接收键盘输入的信息传给服务器端,由服务器端验证后,客户端接收服务器端传回的信息。

public class LoginClientTest {

    public static void main(String[] args) throws UnknownHostException, IOException {
        // TODO Auto-generated method stub
        Socket socket = new Socket(InetAddress.getByName("10.0.185.54"),32145);
        System.out.println("客户端启动...");

        InputStream in = socket.getInputStream();
        OutputStream out = socket.getOutputStream();

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

        String line = null;
        byte[] arr = new byte[1024];
        int len = 0;

        while((line = br.readLine())!=null){
            if("over".equals(line))
                break;
//          System.out.println("lala");

            out.write(line.getBytes());
//          out.write("\r\n".getBytes());

            len = in.read(arr);
            System.out.println(new String(arr,0,len));
        }


        br.close();
        out.close();
        in.close();
        socket.close();


    }

}

Server服务器端
接收客户端传来的数据信息,跟集合(模拟数据库)中的数据匹配,若有,传回登陆成功的信息。

public class LoginServerTest {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        ServerSocket server = new ServerSocket(32145);
        Socket socket = server.accept();

        OutputStream out = socket.getOutputStream();
        InputStream in = socket.getInputStream();
//      BufferedReader br = new BufferedReader(new InputStreamReader(in));

        String line = null;
        byte [] arr = new byte[1024];
        int len =0;

        while((len = in.read(arr))!=-1){
            //new String(arr,0,len).equals("aaa") 
            String str = new String(arr,0,len);
            boolean bool = LoginTool1.Check(str);
            if(bool){
                out.write((str+",欢迎光临").getBytes());
                System.out.println(str+",已登录");
            }
            else{
                //修改
                out.write((str+",该用户不存在").getBytes());
                System.out.println(str+"尝试登陆");
            }
        }
        in.close();
        out.close();
        socket.close(); 
    }
}

class LoginTool1{
    //修改  原来没有new对象,所以是空
    public static Set<String> set = new HashSet<String>();
    static{
        set.add("aaa");
        set.add("bbb");
        set.add("ccc");
    }
        //set.add("aa");

    public static boolean Check(String s){
            if(set.contains(s)){
                return true;
            }
            else
                return false;
        }
}

单线程的模式,只能与一个客户端相连。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值