一个客户登录系统,最简单也需要,客户端、服务器端、数据库、客户类客户端,需要建立socket端口,创建键盘输入流,创建数据输出流对象,在输出数据之后,接受服务器端传过来的判断数据,并展示服务器端数据。
服务器端,建立服务器端口,建立socket端口,创建输出流,接收客户端发过来的数据,与数据库进行比较,判断输入信息的正确性,并返回给客户端。
数据库,用来存储数据的地方,并提供接口供调用
一个类,用来定义账号密码的格式以及方便调用数据库中的信息
客户端代码:
package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/*
* 模拟用户登录改写(面向对象版本)
*/
public class ClientTest {
public static void main(String[] args) throws IOException {
//创建客户端Socket对象
Socket s = new Socket("SKY",8888);
//获取用户名和密码
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名:");
String username = br.readLine();
System.out.println("请输入密码:");
String password = br.readLine();
//获取输出流对象
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
//写出数据
out.println(username);
out.println(password);
//获取输入流对象
BufferedReader serverBr = new BufferedReader(new InputStreamReader(s.getInputStream()));
//获取服务器返回的数据
String result = serverBr.readLine();
System.out.println(result);
//释放资源
s.close();
}
}
服务器端代码:
package com
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 {
// 创建服务器端口
ServerSocket ss = new ServerSocket(8888);
// 创建套接字端口
Socket s = ss.accept();
// 获取输入流
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
// 接收数据
String username = br.readLine();
String password = br.readLine();
// 判断数据
boolean flag = false;
/*if ("".equals(username) && "".equals(username)) {
flag = true;
}*/
//获取数据库中的数据
List<User> users=UserDataBase.getUsers();
//判断该集合内是否有这个对象
User userss=new User(username,password);
if(users.contains(userss)){
flag=true;
}
// 获取输出流对象
PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
// 返回判断信息
if (flag) {
pw.println("登录成功");
} else {
pw.println("登陆失败");
}
// 释放资源
s.close();
}
}
用户类代码:
package com.it_07;
public class User {
private String username;
private String password;
public User() {
super();
}
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;
}
@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;
}
}
模拟数据库的代码片段
package com.it_07;
import java.util.ArrayList;
import java.util.List;
/*用来存数据,写这个类模拟数据库*/
public class UserDataBase {
// 通过创建集合来存储用户对象
private static List<User> users = new ArrayList<User>();
// 添加数据
static {
users.add(new User("zhang", "123456"));
users.add(new User("lisii", "654321"));
users.add(new User("heima", "heimaheima"));
users.add(new User("admin", "password"));
}
// 创建调用方法
public static List<User> getUsers() {
return users;
}
}