本案例使用TCP协议模拟登录操作(Socket作为客户端,ServerSocket作为服务器端),在服务器创建user.properties文件,保存已经注册的用户的用户名和密码(格式:root=toor,左侧root代表用户名,右侧toor代表密码),客户端通过
时间: 2023-08-04 12:04:28 浏览: 52
Socket连接服务器后,输入用户名和密码进行登录验证,如果验证通过,则返回登录成功信息;否则返回登录失败信息。
下面是一个简单的登录案例代码示例:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class LoginServer {
public static void main(String[] args) throws Exception {
// 创建ServerSocket对象
ServerSocket server = new ServerSocket(8888);
System.out.println("服务器启动,等待客户端连接...");
// 监听客户端连接
Socket client = server.accept();
System.out.println("客户端连接成功!");
// 读取user.properties文件
File file = new File("user.properties");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
StringBuilder builder = new StringBuilder();
while ((line = reader.readLine()) != null) {
builder.append(line).append("\n");
}
String content = builder.toString();
reader.close();
// 获取输入输出流
InputStream inputStream = client.getInputStream();
OutputStream outputStream = client.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(outputStream));
// 循环等待客户端输入用户名和密码
while (true) {
// 读取客户端输入
String input = in.readLine();
if (input == null) {
break;
}
// 解析用户名和密码
String[] tokens = input.split(",");
String username = tokens[0];
String password = tokens[1];
// 验证用户名和密码
if (content.contains(username + "=" + password)) {
out.write("登录成功!\n");
out.flush();
break;
} else {
out.write("用户名或密码错误,请重新输入!\n");
out.flush();
}
}
// 关闭流和连接
in.close();
out.close();
client.close();
server.close();
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class LoginClient {
public static void main(String[] args) throws Exception {
// 创建Socket对象
Socket socket = new Socket("localhost", 8888);
// 获取输入输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(outputStream));
// 循环输入用户名和密码
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.print("请输入用户名和密码(格式:username,password):");
String input = reader.readLine();
// 发送用户名和密码到服务器
out.write(input + "\n");
out.flush();
// 读取服务器返回的信息
String response = in.readLine();
System.out.println(response);
// 如果登录成功,则退出循环
if (response.equals("登录成功!")) {
break;
}
}
// 关闭流和连接
in.close();
out.close();
socket.close();
}
}
```
在运行客户端和服务器端之前,需要先创建一个user.properties文件,保存已经注册的用户的用户名和密码,例如:
```
root=toor
admin=admin123
test=test123
```
然后运行服务器端和客户端,输入用户名和密码进行登录验证。如果用户名和密码正确,则显示“登录成功!”;否则显示“用户名或密码错误,请重新输入!”
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)