网络编程挑战:Java Socket、ServerSocket通信错误处理实例
在Java中,使用Socket
和ServerSocket
进行网络编程时,错误处理是一个重要的部分。以下是一些常见的错误处理实例,可以帮助你更好地理解和处理网络通信中可能遇到的问题。
1.服务器端错误处理```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…”);
while (true) {
Socket socket = serverSocket.accept();
System.out.println(“Client connected.”);
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
String inputLine;
while ((inputLine = in.readLine()) != null) {
out.println(“Echo: “ + inputLine);
}
} catch (IOException e) {
System.out.println(“Error handling client: “ + e.getMessage());
} finally {
socket.close();
}
}
} catch (IOException e) {
System.out.println(“Server exception: “ + e.getMessage());
e.printStackTrace();
}
}
}###2.客户端错误处理
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 response: “ + in.readLine());
}
} catch (UnknownHostException e) {
System.out.println(“Server not found: “ + e.getMessage());
} catch (IOException e) {
System.out.println(“I/O error: “ + e.getMessage());
}
}
}
```###错误处理要点:
- 捕获异常:使用
try-catch
块来捕获可能发生的异常,如IOException
。 - 资源管理:使用
try-with-resources
或在finally
块中关闭资源,如Socket
、InputStream
和OutputStream
。 - 错误信息:打印错误信息,帮助调试和定位问题。
- 客户端异常处理:处理
UnknownHostException
(服务器不可达)和IOException
(I/O错误)。
通过这些基本的错误处理策略,你可以构建更健壮的网络应用程序。记得在实际应用中根据具体需求调整和扩展错误处理逻辑。
还没有评论,来说两句吧...