Java网络编程:Socket通信错误处理案例
在Java的网络编程中,Socket通信可能会出现各种错误。以下是一个简单的案例,包括错误处理和重试逻辑。
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServerWithErrorHandling {
private static final int SERVER_PORT = 1234;
public static void main(String[] args) throws IOException {
// 创建服务器Socket
ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
System.out.println("Server is listening on port " + SERVER_PORT);
while (true) {
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
try {
handleClientConnection(clientSocket);
} catch (IOException e) {
System.err.println("Error handling client connection: " + e.getMessage());
closeSocket(clientSocket);
}
}
}
private static void handleClientConnection(Socket clientSocket) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())));
// 获取客户端发送的消息
String requestMessage = in.readLine();
// 处理请求消息(这里假设一个简单的Echo服务)
String echoResponse = processRequest(requestMessage));
// 向客户端发送响应
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()))));
out.write(echoResponse);
out.flush();
}
private static String processRequest(String requestMessage) {
// 假设一个简单的Echo服务,这里只是处理请求
if (requestMessage.contains("echo")) {
return "Echo: " + requestMessage;
} else {
return "Invalid Request";
}
}
private static void closeSocket(Socket clientSocket) throws IOException {
clientSocket.close();
}
}
在这个案例中,我们创建了一个服务器端Socket来监听客户端连接。当有客户端连接时,我们尝试处理客户端发送的消息,并可能需要重试。
如果在处理过程中出现错误(如IO异常),我们将捕获并打印错误信息,然后关闭客户端Socket以释放资源。
还没有评论,来说两句吧...