✨Java 获取以太网IP
330 字
2 分钟
✨Java 获取以太网IP
Java 获取以太网IP
遍历获取以eth开头的网卡
package com.lds.utils;
import cn.hutool.log.StaticLog;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.util.Collections;import java.util.Enumeration;
/** * <strong style='color:purple;'>Created with IntelliJ IDEA.<hr> * <strong style='color:orange;'>Author: lds<hr> * <strong style='color:yellow;'>Date: 2021/9/1 10:01<hr> * <strong style='color:blue;'>Class: com.lds.util<hr> * <strong style='color:indigo;'>Project: demo<hr> * <strong style='color:red;'>Description: 获取当前IP及端口<hr> */@Slf4j@Componentpublic class IPUtils {
private static String serverPort; @Value("${server.port}") private String port;
@PostConstruct public void setServerPort() { serverPort = port; StaticLog.info("port:" + serverPort); }
/** * 获取当前服务的ip和端口 * * @param * @author: lds * @date: 2021/9/1 10:03 * @return: {@link String} */ public static String getServerIpAndPort() {
InetAddress address = null; try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface ni : Collections.list(interfaces)) { if (ni.isUp() && !ni.isLoopback() && ni.getName().startsWith("eth")) { Enumeration<InetAddress> addresses = ni.getInetAddresses(); for (InetAddress inetAddress : Collections.list(addresses)) { if (inetAddress.isSiteLocalAddress()) { log.info("Ethernet IP Address: {}", inetAddress.getHostAddress()); address = inetAddress; } } } } } catch (SocketException e) { log.error("", e); } return address.getHostAddress() + ":" + IPUtils.serverPort; }
/** * 获取当前服务的ip和端口 * * @param * @author: lds * @date: 2021/9/1 10:03 * @return: {@link String} */ public static String getServerIpAndPort(InetAddress address) { return address.getHostAddress() + ":" + IPUtils.serverPort; }
public static String getRealIp(HttpServletRequest request) { String ipAddress = request.getHeader("X-Real-IP"); if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("X-Forwarded-For"); } if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); } if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); } if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("HTTP_CLIENT_IP"); } if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); } return ipAddress; }
}文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章 智能推荐
1
✨Excel 样式复制工具类
技术分享 记录 Java 中复制 Excel 单元格样式的工具类实现,用于上传、读取和生成 Excel 文件时保留样式。
2
✨上移下移,升级降级树形节点操作工具类
技术分享 记录 Java 树形节点排序工具类实现,支持同层级上移下移、升级降级等节点调整操作。
3
✨Response 响应流遇到的坑
技术分享 记录后端通过 Response 输出文件流时前端获取 Blob 大小为 0 的问题排查和响应头处理方式。
4
✨IDEA 常用快捷键
技术分享 整理 IntelliJ IDEA 日常开发常用快捷键,覆盖搜索、编辑、导航、重构、运行调试、Git 与窗口操作。
5
✨使用EasyExcel实现导出Excel写入图片
技术分享 记录使用 EasyExcel 导出 Excel 并写入图片的实现示例,包含自定义写入处理逻辑。
随机文章 随机推荐