以下是一个简单的基于TCP的Java Socket编程实例代码。这个示例包括服务器端和客户端两部分。服务器端将监听一个端口,等待客户端的连接,并接收客户端发送的消息。客户端将连接到服务器,并发送一条消息给服务器。
### 服务器端代码 (Server.java)
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
int port = 12345; // 服务器端口号
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("服务器启动,监听端口 " + port);
Socket socket = serverSocket.accept(); // 等待客户端连接
System.out.println("客户端已连接");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("服务器接收到: " + inputLine);
// 处理接收到的数据,此处仅为打印
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
### 客户端代码 (Client.java)
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
String hostname = "localhost"; // 服务器地址
int port = 12345; // 服务器端口号
try (Socket socket = new Socket(hostname, port)) {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello from Client!"); // 向服务器发送消息
socket.close();
} catch (UnknownHostException e) {
System.err.println("无法找到主机: " + hostname);
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
**注意**:
- 服务器端在接收到客户端连接后,会不断读取来自客户端的输入,直到输入流结束(即客户端关闭连接)。
- 客户端连接到服务器后,发送一条消息,然后关闭连接。
- 在实际部署时,需要处理更多的异常情况和边缘情况,例如网络断开、数据格式问题等。
- 这个示例仅用于演示基本的TCP Socket通信流程。