客服端发送输入用户名和密码,接受服务器端返回的登陆结果
步骤:
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;
}
}
运行结果: