java 实现的一个好用的跨平台网络接口管理器(yl-itfc-manager)

介绍

管理网络接口、串口的工具库。基于shell脚本的方式直接调用操作系统网络、硬件资源接口。解决java无法直接配置网络信息(网关地址获取、ip配置、wifi配置)等痛点。
让服务端应用也能直接操作操作系统的网络接口。目前支持win(10-11),后续将支持linux、mac等平台。

安装教程

  • maven 引入依赖
<dependency>
    <groupId>com.yaolonga</groupId>
    <artifactId>yl-itfc-manager-spring-boot-starter</artifactId>
    <version>1.0.1-RELEASE</version>
</dependency>
使用说明
  • 使用(直接注入即可,无需配置,根据当前运行平台自动适配(当前仅支持win平台))
@Autowired
private NetworkInterfaceManager networkInterfaceManager;

功能介绍

  • 获取网卡信息(包括当前接入该网卡的网关信息)
  • 配置ip地址(包括动态dhcp配置、静态ip配置)
  • 配置系统dns(动态dhcp dns,静态dns,获取网卡dns)
  • 路由配置(获取、设置本机路由表、临时路由、和静态路由)
  • wifi配置(获取当前系统wifi连接信息、连接wifi、断开wifi、扫描wifi、忘记wifi、设置wifi配置、删除wifi配置】)
public interface NetworkInterfaceManager {

    default Boolean isSupportVersion(String version){
        return getSystemType().isSupportVersion(version);
    }

    /**
     * 获取平台类型
     */
    PlatformType getPlatformType();

    /**
     * @return 获取系统类型
     */
    SystemType getSystemType();

    /**
     * @return 获取网卡信息
     */
    List<NetworkInterfaceInfo> getNetworkInterfaceInfos();


    /**
     * 配置dhcp ip地址
     *
     * @param interfaceName 网卡名称
     * @return 结果
     */
    String configDhcpIpAddress(String interfaceName);

    /**
     * 配置dhcp dns地址 (自动)
     *
     * @param interfaceName 网卡名称
     * @return 结果
     */
    String configDhcpDnsAddress(String interfaceName);

    /**
     * 配置静态ip地址
     *
     * @param interfaceName 网卡名称
     * @return 结果
     */
    String configStaticIpAddress(String interfaceName, String ip, String mask, String gateway);

    /**
     * 配置静态dns地址 (首选静态)
     *
     * @param interfaceName 网卡名称
     * @param dnsAddress    dns地址
     * @return 结果
     */
    String configStaticDnsAddress(String interfaceName, String dnsAddress);


    /**
     * 添加一个dns地址 (追加一个dns)
     *
     * @param interfaceName 网卡名称
     * @param dnsAddress    dns地址
     * @param index         添加索引
     * @return 结果
     */
    String addDnsAddress(String interfaceName, String dnsAddress, int index);

    /**
     * 添加一个dns地址 (追加一个dns)
     *
     * @param interfaceName 网卡名称
     * @param dnsAddress    dns地址
     * @return 结果
     */
    String addDnsAddress(String interfaceName, String dnsAddress);

    /**
     * 添加多个dns地址 (添加顺序根据列表顺序)
     *
     * @param interfaceName 网卡名称
     * @param dnsAddress    dns地址
     * @return 结果
     */
    default Map<String, String> addDnsAddress(String interfaceName, List<String> dnsAddress) {
        if (dnsAddress == null || dnsAddress.isEmpty()) {
            return null;
        }
        Map<String, String> map = new HashMap<>();
        for (String address : dnsAddress) {
            String s = addDnsAddress(interfaceName, address);
            map.put(address, s);
        }
        return map;
    }

    /**
     * 删除dns地址
     *
     * @param interfaceName 网卡名称
     * @param dnsAddress    dnsAddress
     * @return 结果
     */
    String delDnsAddress(String interfaceName, String dnsAddress);


    /**
     * 添加路由
     *
     * @param route 路由配置
     * @return 结果
     */
    String addRoute(NetRoute route);

    /**
     * 添加临时路由
     *
     * @param route 路由配置
     * @return 结果
     */
    default String addTempRoute(NetRoute route) {
        route.setType(NetRouteType.TEMPORARY_ROUTE);
        return addRoute(route);
    }

    /**
     * 添加永久路由
     *
     * @param route 路由配置
     */
    default String addPermanentRoute(NetRoute route) {
        route.setType(NetRouteType.PERMANENT_ROUTE);
        return addRoute(route);
    }

    /**
     * 添加多个路由
     *
     * @param routes 路由配置列表
     */
    default Map<String, String> addRoutes(List<NetRoute> routes) {
        if (routes == null || routes.isEmpty()) {
            return null;
        }
        Map<String, String> map = new HashMap<>();
        for (NetRoute route : routes) {
            String res = addRoute(route);
            map.put(route.getTarget(), res);
        }
        return map;
    }


    /**
     * 修改路由
     *
     * @param route 路由配置
     * @return 结果
     */
    String changeRoute(NetRoute route);

    /**
     * 删除路由
     *
     * @param route 路由配置
     * @return 结果
     */
    String delRoute(NetRoute route);


    /**
     * 扫描wifi信息
     *
     * @param interfaceName 网卡名称
     * @return wifi信息
     */
    WifiScanInfo scanWifiInfo(String interfaceName);


    /**
     * 获取wifi连接信息
     *
     * @param interfaceName 网卡名称
     * @return wifi连接信息
     */
    default WifiLinkInfo getWifiLinkInfo(String interfaceName) {
        return getWifiLinkInfos().stream().filter(wifiLinkInfo -> wifiLinkInfo.getInterfaceName().equals(interfaceName)).findFirst().orElse(null);
    }

    /**
     * 获取wifi连接信息列表
     *
     * @return wifi连接信息列表
     */
    List<WifiLinkInfo> getWifiLinkInfos();


    /**
     * 连接wifi
     *
     * @param interfaceName  网卡名称
     * @param ssid           ssid
     * @param password       密码
     * @param autoConnection 是否自动连接
     * @return 结果
     */
    String connectWifi(String interfaceName, String ssid, String password, boolean autoConnection);

    /**
     * 连接wifi
     *
     * @param wifiLinkConf wifi连接配置
     * @return 结果
     */
    default String connectWifi(WifiLinkConf wifiLinkConf) {
        return connectWifi(wifiLinkConf.getInterfaceName(), wifiLinkConf.getSsid(), wifiLinkConf.getPassword(), wifiLinkConf.isAutoConnection());
    }

    /**
     * 断开wifi
     *
     * @param interfaceName 网卡名称
     * @return 结果
     */
    String disconnectWifi(String interfaceName);


    /**
     * 忘记wifi
     *
     * @param interfaceName 网卡名称
     * @param ssid          ssid
     * @return 结果
     */
    String forgetWifi(String interfaceName, String ssid);


    /**
     * 设置wifi配置
     *
     * @param wifiLinkConf wifi配置信息
     * @return 结果
     */
    String setWifiConf(WifiLinkConf wifiLinkConf);


    /**
     * 删除wifi配置
     *
     * @param interfaceName 网卡名称
     * @param ssid          ssid
     * @return 结果
     */
    String delWifiConf(String interfaceName, String ssid);


    /**
     * 启用wifi (win 需要 admin权限)
     *
     * @param interfaceName 网卡名称
     * @return 结果
     */
    String enableWifi(String interfaceName);

    /**
     * 禁用wifi (win 需要 admin权限)
     *
     * @param interfaceName 网卡名称
     * @return 结果
     */
    String disableWifi(String interfaceName);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值