以下是一个简单的 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 数据库,查询用户名和密码是否为已经存储的值,并将查询结果发送给客户端。需要注意的是,该服务器端仅适用于单个客户端连接,如果需要支持多个客户端连接,需要使用多线程编程实现。

Java Socket 服务器实现:用户认证与数据库查询

原文地址: https://www.cveoy.top/t/topic/kfSy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录