客户端实现与服务器端的socket连接发送和接收相应的字符串。设计一个服务器端实现与客户端的socket连接发送和接收相应的字符串;实现连接和查询数据库的功能检索某用户名和密码是否为数据库中已经存储的值。维护一个小型数据库可以采用Mysql数据库仅包含两个字段:用户名密码;保存已经认证的用户名和密码值对。用java实现服务端
以下是一个简单的Java服务器端实现,可以实现与客户端的socket连接,发送和接收相应的字符串,以及连接和查询数据库的功能,检索某用户名和密码是否为数据库中已经存储的值。该服务器端使用了MySQL数据库。
import java.io.*;
import java.net.*;
import java.sql.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,监听端口号为8888
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
// 等待客户端连接
Socket socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getRemoteSocketAddress());
// 创建输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 连接MySQL数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功!");
// 读取客户端发送的字符串,格式为“用户名 密码”
String input = in.readLine();
System.out.println("客户端发送的字符串:" + input);
// 查询数据库,检索用户名和密码是否为已经存储的值
String[] parts = input.split(" ");
String username = parts[0];
String pwd = parts[1];
String sql = "SELECT * FROM users WHERE username='" + username + "' AND password='" + pwd + "'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
boolean found = rs.next();
// 发送查询结果给客户端
if (found) {
out.println("认证成功!");
} else {
out.println("认证失败!");
}
// 关闭连接
rs.close();
stmt.close();
conn.close();
in.close();
out.close();
socket.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
该服务器端使用了Java的Socket编程实现与客户端的连接,使用了Java的JDBC技术连接MySQL数据库,查询用户名和密码是否为已经存储的值,并将查询结果发送给客户端。需要注意的是,该服务器端仅适用于单个客户端连接,如果需要支持多个客户端连接,需要使用多线程编程实现
原文地址: https://www.cveoy.top/t/topic/cQ78 著作权归作者所有。请勿转载和采集!