java socket如何运行
Java Socket 的基本运行方法
Java Socket 编程基于客户端-服务器模型,通过 java.net 包中的 Socket 和 ServerSocket 类实现。以下是实现简单通信的代码示例和说明。
服务器端代码
服务器端使用 ServerSocket 监听指定端口,等待客户端连接:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
int port = 12345;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("服务器启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接");
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())
);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("收到客户端消息: " + inputLine);
out.println("服务器回复: " + inputLine);
}
in.close();
out.close();
clientSocket.close();
serverSocket.close();
}
}
客户端代码
客户端通过 Socket 连接到服务器并发送消息:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
String host = "localhost";
int port = 12345;
Socket socket = new Socket(host, port);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("服务器回复: " + in.readLine());
}
out.close();
in.close();
stdIn.close();
socket.close();
}
}
运行步骤
- 编译服务器端和客户端代码:
javac Server.java javac Client.java - 先运行服务器端程序:
java Server - 再运行客户端程序:
java Client
关键点说明
ServerSocket用于服务器端绑定端口并监听连接。Socket用于建立客户端与服务器的连接,或服务器接受客户端连接。BufferedReader和PrintWriter用于处理输入输出流。- 通信完成后需关闭所有资源以避免内存泄漏。
扩展功能
- 多线程处理:服务器端可以为每个客户端连接创建独立线程。
- 异常处理:添加
try-catch块处理网络异常。 - 数据序列化:通过
ObjectInputStream和ObjectOutputStream传输对象。







