Socket 编程中常见的异常有哪些?代码举例讲解

Socket 编程中常见的异常主要有:

  1. IOException:IO异常,例如连接失败、读写失败等。
try {
    Socket socket = new Socket("127.0.0.1", 8000);
} catch (IOException e) {
    e.printStackTrace();
}
  1. ConnectException:连接失败异常,例如服务器未启动。
try {
    Socket socket = new Socket("127.0.0.1", 8000);
} catch (ConnectException e) {
    e.printStackTrace();
}
  1. SocketTimeoutException: socket 超时异常,例如服务器响应过慢。
socket.setSoTimeout(1000);    // 设置1s超时时间
try {
    InputStream in = socket.getInputStream();
    byte[] buffer = new byte[1024];
    in.read(buffer);
} catch (SocketTimeoutException e) {
    e.printStackTrace(); 
}
  1. PortUnreachableException:端口不可达异常,例如目标端口不存在。
try {
    DatagramSocket socket = new DatagramSocket(8000); 
    socket.send(packet);
} catch (PortUnreachableException e) {
    e.printStackTrace();
}
  1. SocketException: socket 异常,例如 socket 已关闭。
InputStream in;
try {
    in = socket.getInputStream();
} catch (SocketException e) {
    e.printStackTrace();
}
  1. BindException: 绑定端口失败异常,例如端口已被占用。
try {
    ServerSocket server = new ServerSocket(8000); 
} catch (BindException e) {
    e.printStackTrace();
}

总之,通过 try-catch 语句捕获这些异常,可以使 Socket 程序具有更强的健壮性,避免程序崩溃。事先考虑这些异常的产生原因,并作出合理处理,可以让程序更加完善。