下面是一个使用Java的Socket进行通信的简单示例:
服务器端代码:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket并监听端口
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("服务器已启动,等待客户端连接...");
// 接受客户端连接
Socket socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getInetAddress());
// 获取输入流,读取客户端发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = reader.readLine();
System.out.println("收到客户端消息:" + message);
// 获取输出流,向客户端发送数据
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
writer.println("服务器已收到消息:" + message);
// 关闭资源
reader.close();
writer.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端代码:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket并连接到服务器
Socket socket = new Socket("localhost", 8080);
System.out.println("已连接到服务器");
// 获取输出流,向服务器发送数据
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
writer.println("Hello, Server!");
// 获取输入流,读取服务器返回的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String response = reader.readLine();
System.out.println("收到服务器回复:" + response);
// 关闭资源
reader.close();
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,服务器端通过ServerSocket
监听指定端口(例如8080),等待客户端的连接。一旦有客户端连接成功,服务器将与客户端建立Socket
连接。然后,服务器可以通过Socket
的输入流读取客户端发送的数据,并通过输出流向客户端发送响应数据。客户端同样通过Socket
的输入流接收服务器的响应数据,并通过输出流向服务器发送数据。最后,关闭所有资源以释放系统资源。
请注意,上述代码只是一个简单的示例,实际应用中可能需要处理更多的异常情况和逻辑。