基于TCP,简单的实现客服端登陆,服务器端验证

客服端发送输入用户名和密码,接受服务器端返回的登陆结果
步骤:
1.创建Socket对象
2.得到用户输入的用户名和密码
3.得到输出流
4.发送数据
5.的到输入流
6.得到服务器返回结果并输出
7.关闭资源

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class ClientTest {

	public static void main(String[] args) throws IOException {
		// 1.创建Socket对象
		Socket s = new Socket(InetAddress.getByName("DESKTOP-NFHEV8O"), 10086);

		// 2.得到用户输入的用户名和密码
		// 键盘输入两行的内容
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("请输入用户名:");
		String username = br.readLine();
		System.out.println("请输入密码:");
		String password = br.readLine();

		// 3.得到输出流
		// PrintWriter可实现输入一行自动换行
		PrintWriter out = new PrintWriter(s.getOutputStream(), true);

		// 4.发送数据
		out.println(username);
		out.println(password);

		// 5.的到输入流
		BufferedReader sbr = new BufferedReader(new InputStreamReader(s.getInputStream()));

		// 6.得到服务器返回结果并输出
		String result = sbr.readLine();
		System.out.println(result);
		
		// 7.关闭资源
		s.close();
	}
}

接受客服端传过来的用户名和密码,单点校验后返回客户端登陆成功与否

步骤:
1.创建服务器端Socket对象
2.监听
3.得到收入 流
4.得到数据
5.简单校验
6.得到输出流
7.发送数据
8.关闭连接

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;

public class ServerTest {

	public static void main(String[] args) throws IOException {
		// 1.创建服务器端Socket对象
		ServerSocket ss=new ServerSocket(10086);
		
		// 2.监听,返回客户端的Socket对象
		Socket s=ss.accept();
		
		// 3.得到收入 流,一次可接收一行的输入流
		BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
	
		// 4.得到数据
		String username=br.readLine();
		String password=br.readLine();
		//封装成User对象
		User user=new User(username,password);
		
		// 5.简单校验
		boolean flag=false;//校验标记,初始为false
		//判断,如果验证成功,改变标准为true否则标记不变
		
		//得到所有User的集合
		List<User> users=UserDB.getUser();
		//判断集合中是否包含客服端发过来的user对象 使用contains放法 注意重写equals方法
		if(users.contains(user))
			flag=true;
		
		// 6.得到输出流
		PrintWriter pw=new PrintWriter(s.getOutputStream(),true);
		
		// 7.发送校验结果
		if(flag){
			pw.println("登陆成功");
		}
		else{
			pw.println("登陆失败");
		}
		// 8.关闭连接
		s.close();
		//ss.close();//服务器一般不关闭
	}
}

数据对象User:


public class User {
	private String username;
	private String password;
	
	public User(){}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (password == null) {
			if (other.password != null)
				return false;
		} else if (!password.equals(other.password))
			return false;
		if (username == null) {
			if (other.username != null)
				return false;
		} else if (!username.equals(other.username))
			return false;
		return true;
	}
	public User(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

数据集合类UserDB:

import java.util.ArrayList;
import java.util.List;

public class UserDB {
	private static List<User> users=new ArrayList<User>();
	
	static{
		users.add(new User("ligang","123456"));
		users.add(new User("kangli","123456"));
		users.add(new User("ss","ss"));
	}
	public static List<User> getUser(){
		return users;
	}
}

运行结果:
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值