Java网络编程:Socket通信异常处理案例
Java网络编程中,使用Socket进行通信时,异常处理是非常重要的一环。异常处理可以帮助我们识别和处理在网络通信过程中可能遇到的问题,比如连接失败、数据传输错误等。下面是一个简单的Socket通信异常处理的案例:
服务端代码示例:
```javaimport java.io.;
import java.net.;
public class Server {
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(1234)) {
System.out.println(“Server is running and waiting for client connection…”);
//等待客户端连接Socket clientSocket = serverSocket.accept();
System.out.println(“Client connected.”);
// 获取输入输出流 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(“Client: “ + inputLine);
out.println(“Server: “ + inputLine); //回显消息 }
} catch (IOException e) {
System.out.println(“Server exception: “ + e.getMessage());
e.printStackTrace();
}
}
}
```###客户端代码示例:
```javaimport java.io.;
import java.net.;
public class Client {
public static void main(String[] args) {
try (Socket socket = new Socket(“localhost”,1234)) {
System.out.println(“Connected to server.”);
// 获取输入输出流 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput); // 发送消息到服务器 System.out.println(“Server: “ + in.readLine()); //接收服务器回显的消息 }
} catch (UnknownHostException e) {
System.out.println(“Server not found: “ + e.getMessage());
} catch (IOException e) {
System.out.println(“I/O error: “ + e.getMessage());
}
}
}
```###异常处理说明:
IOException:这是网络编程中最常遇到的异常,涵盖了多种网络错误,如连接失败、数据传输错误等。在上述代码中,我们捕获了
IOException
并打印了错误信息。UnknownHostException:当客户端尝试连接到一个不存在的主机时,会抛出这个异常。在客户端代码中,我们特别捕获了这个异常。
资源管理:使用
try-with-resources
语句确保Socket
、BufferedReader
和PrintWriter
等资源在结束时被正确关闭,即使发生异常也是如此。
通过这样的异常处理,我们可以确保程序在遇到错误时能够给出清晰的反馈,并且资源能够被正确管理。在实际开发中,你可能还需要根据具体需求添加更详细的异常处理逻辑。
还没有评论,来说两句吧...