在 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();
}
}
}
🛠️ 三、运行步骤
-
编译 Java 文件:
javac SimpleServer.java javac SimpleClient.java -
启动服务器:
java SimpleServer -
打开另一个终端运行客户端:
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技术博