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

来源:互联网 发布:ncut算法优劣 编辑:程序博客网 时间:2024/06/10 15:30

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 0