返回

剖析Spring Boot探求应用IP、端口真谛:庖丁解牛,探根究底!

后端

Spring Boot:获取应用 IP 和端口的指南

认识 IP 和端口

在计算机网络中,IP 地址(Internet Protocol Address) 是标识网络中计算机或设备身份的唯一号码。端口号 用于区分计算机上不同的应用程序。Spring Boot 应用需要这些信息才能与其他设备通信。

获取应用 IP 地址

  • InetAddress.getLocalHost().getHostAddress() :获取本地机器的 IP 地址。
String ipAddress = InetAddress.getLocalHost().getHostAddress();
  • Netstat -n 命令: 获取应用的 IP 地址和端口号。
netstat -n | grep LISTEN
  • Java API: 使用 SocketServerSocket 类获取 IP 地址。
Socket socket = new Socket();
String ipAddress = socket.getInetAddress().getHostAddress();

ServerSocket serverSocket = new ServerSocket();
ipAddress = serverSocket.getInetAddress().getHostAddress();
  • 第三方库: 使用 Apache Commons Net 等库获取 IP 地址。
String ipAddress = InetAddressUtils.getIpAddress();

获取应用端口

  • @ServerPort 注解: 获取应用的端口号。
@SpringBootApplication
public class Application {

    @ServerPort
    private int port;

    // ...
}
  • Environment 接口: 使用 getProperty() 方法获取端口号。
Environment environment = context.getEnvironment();
int port = environment.getProperty("server.port", Integer.class);
  • Java API: 使用 SocketServerSocket 类获取端口号。
Socket socket = new Socket();
int port = socket.getPort();

ServerSocket serverSocket = new ServerSocket();
port = serverSocket.getLocalPort();

应用场景

  • 日志记录: 记录应用的 IP 和端口号以帮助调试。
  • 监控: 监控应用的性能和健康状况。
  • 负载均衡: 在集群中平衡应用请求。
  • 远程访问: 配置远程访问规则。

常见问题解答

  1. 如何获取对外 IP 地址?

    • 使用 Netstat -n 命令或第三方库(如 NetAddress)获取对外 IP 地址。
  2. 如何获取应用的 HTTP 端口?

    • 使用 @ServerPort 注解或 Environment 接口获取应用的 HTTP 端口。
  3. 如何为特定端口创建服务器套接字?

    • 使用 ServerSocket(int port) 构造函数创建服务器套接字并指定端口。
  4. 如何获取应用的 IPV6 地址?

    • 使用 InetAddress.getByName("www.example.com") 方法获取 IPV6 地址。
  5. 如何使用 Spring Boot 配置多个 IP 地址?

    • 使用 server.addressserver.port 属性配置多个 IP 地址。