如何在Java中搭配一个简单的服务器?

在 Java 中搭建一个简单的服务器,可以使用 Java 的 ServerSocket来实现一个基于 TCP 协议的服务器。下面是一个非常基础的示例:创建一个监听客户端连接并接收消息的服务器。


🧱 一、使用 ServerSocket 搭建简单服务器

✅ 示例代码:

import java.io.*;
import java.net.*;

public class SimpleServer {
    public static void main(String[] args) {
        int port = 8080; // 端口号

        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("服务器启动,等待客户端连接...");

            // 等待客户端连接
            Socket clientSocket = serverSocket.accept();
            System.out.println("客户端已连接:" + clientSocket.getInetAddress());

            // 获取输入流(读取客户端发送的数据)
            BufferedReader in = new BufferedReader(
                new InputStreamReader(clientSocket.getInputStream())
            );

            // 读取客户端发来的消息
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println("收到客户端消息: " + inputLine);

                // 如果收到 "exit",关闭连接
                if ("exit".equalsIgnoreCase(inputLine)) {
                    break;
                }
            }

            // 关闭流和连接
            in.close();
            clientSocket.close();
            System.out.println("服务器关闭。");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

📡 二、测试服务器(可选客户端)

你可以用以下方式之一连接这个服务器进行测试:

1. 使用 Telnet(Windows / Linux)

telnet 127.0.0.1 8080

然后输入一些文本,比如:

Hello Server!
exit

2. 使用 Java 客户端代码

import java.io.*;
import java.net.*;

public class SimpleClient {
    public static void main(String[] args) {
        String hostName = "127.0.0.1";
        int port = 8080;

        try (Socket socket = new Socket(hostName, port)) {
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

            System.out.print("请输入要发送的消息:");
            String userInput;
            while ((userInput = stdIn.readLine()) != null) {
                out.println(userInput);
                if ("exit".equalsIgnoreCase(userInput)) break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

🛠️ 三、运行步骤

  1. 编译 Java 文件:

    javac SimpleServer.java
    javac SimpleClient.java
  2. 启动服务器:

    java SimpleServer
  3. 打开另一个终端运行客户端:

    java SimpleClient

🚀 四、扩展建议

  • 支持多客户端连接(使用线程或 ExecutorService
  • 发送响应给客户端
  • 构建 HTTP 服务器(使用 HttpServer 类)
  • 使用 Netty、Spring Boot Web 等框架构建更复杂的服务器

🌍 示例:使用内置 HttpServer 创建一个最简 HTTP 服务

import com.sun.net.httpserver.*;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

public class HttpServerExample {
    public static void main(String[] args) throws IOException {
        HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
        server.createContext("/hello", exchange -> {
            String response = "Hello from Java HTTP Server!";
            exchange.sendResponseHeaders(200, response.getBytes().length);
            OutputStream os = exchange.getResponseBody();
            os.write(response.getBytes());
            os.close();
        });
        server.setExecutor(null); // 使用默认执行器
        server.start();
        System.out.println("HTTP 服务器运行在 http://localhost:8000/hello");
    }
}

如果你有特定的需求,例如:

  • 需要处理网页请求
  • 需要部署为 Web 应用
  • 需要数据库连接

欢迎继续提问,我可以帮你定制更合适的方案!

未经允许不得转载:CLOUD技术博 » 如何在Java中搭配一个简单的服务器?