在Java中,可以使用`java.net`包提供的类来实现Socket通信。下面是一个简单的示例,演示了Java网络编程中的Socket通信。
1. 服务器端:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(8080)) {
System.out.println("服务器已启动,等待客户端连接...");
// 监听客户端连接
Socket socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 读取客户端发送的数据
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
String requestData = new String(buffer, 0, bytesRead);
System.out.println("接收到客户端数据:" + requestData);
// 向客户端发送响应数据
String responseData = "Hello, Client!";
outputStream.write(responseData.getBytes());
System.out.println("向客户端发送响应数据:" + responseData);
// 关闭连接
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
2. 客户端:
```java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost", 8080)) {
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 向服务器发送数据
String requestData = "Hello, Server!";
outputStream.write(requestData.getBytes());
System.out.println("向服务器发送数据:" + requestData);
// 读取服务器的响应数据
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
String responseData = new String(buffer, 0, bytesRead);
System.out.println("接收到服务器响应数据:" + responseData);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上述示例中,服务器端通过`ServerSocket`监听客户端连接,接收客户端的数据,并向客户端发送响应数据。客户端通过`Socket`连接服务器,发送数据,并接收服务器的响应数据。
注意:上述示例仅为演示Socket通信的基本流程,实际应用中可能需要更复杂的逻辑处理和线程管理,以及异常处理等。