package yqw.java.util;

import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

/**
 * 网络相关辅助类
 *
 */
public class NetUtils {
    /**
     * 枚举所有网卡
     */
    public static List<NetworkInterface> EnumNetworkInterfaces() {
        try {
            List<NetworkInterface> netList = new ArrayList<NetworkInterface>();
            for (Enumeration<NetworkInterface> netEnum = NetworkInterface.getNetworkInterfaces(); netEnum
                    .hasMoreElements();) {
                netList.add(netEnum.nextElement());
            }

return netList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

/**
     * 获取本地网卡
     *
     * @return
     */
    public static NetworkInterface getLoopBackNetWorkInterface() {
        try {
            if (NetworkInterface.getNetworkInterfaces() == null) {
                return null;
            }
            for (Enumeration<NetworkInterface> netEnum = NetworkInterface.getNetworkInterfaces(); netEnum
                    .hasMoreElements();) {
                NetworkInterface net = netEnum.nextElement();
                if (net.isLoopback()) {
                    return net;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return null;
    }

/**
     * 枚举所有物理网卡
     *
     */
    public static List<NetworkInterface> EnumPhysicalInterfaces() {
        try {
            List<NetworkInterface> netList = new ArrayList<NetworkInterface>();
            if (NetworkInterface.getNetworkInterfaces() == null) {
                return null;
            }
            for (Enumeration<NetworkInterface> netEnum = NetworkInterface.getNetworkInterfaces(); netEnum
                    .hasMoreElements();) {
                NetworkInterface net = netEnum.nextElement();
                if (net.isPointToPoint() || net.isVirtual() || net.isLoopback() || !net.isUp()) {
                    continue;
                }

netList.add(net);
            }

return netList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

/**
     * 获取第一个物理网卡
     */
    public static NetworkInterface FirstPhysicalInterface() {
        List<NetworkInterface> netList = EnumPhysicalInterfaces();
        if (!CollectionUtils.IsAbsEmpty(netList)) {
            return netList.get(0);
        } else {
            return null;
        }
    }
}

网络相关辅助类NetUtils的更多相关文章

  1. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  2. 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误

    在visual studio 中添加数据库应用时,报错,提示如下: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL ...

  3. 在与SQL Server建立连接时出现于网络相关的或特定于实例的错误

    客户遇到一个问题,用“服务器名\实例名”远程连接另外一台命名实例的时候连接失败,报“在与SQL Server建立连接时出现于网络相关的或特定于实例的错误,未找到或无法访问服务器.请验证实例名称是否正确 ...

  4. linux网络相关配置文件

    linux系统一般来说分为两大类:1.RedHat系列:Redhat.Centos.Fedora等:2.Debian系列:Debian.Ubuntu等. linux系统中,TCP/IP网络是通过若干个 ...

  5. iOS网络相关零散知识总结

    iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径   ...

  6. 与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。

    今天同学请教我数据库为什么打不开了,打开SQL Server 2008 的 SQL Server Management Studio,输入sa的密码发现,无法登陆数据库?提示以下错误: "在 ...

  7. Linux 网络编程基础(1)--网络相关的数据结构及转化函数

    在Linux下进行网络编程,使用的语言一般为C.就个人感受而言,在Linux下进行网络程序的编写,重要的不是代码能力要多强,而是对Linux的网络编程思想的理解和对Linux网络数据结构的掌握.如果想 ...

  8. Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库

    一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...

  9. 不错的C++框架: Thrift(2)-传输和网络相关

    不错的C++框架: Thrift(2)-传输和网络相关 - ang639 - 博客频道 - CSDN.NET 不错的C++框架: Thrift(2)-传输和网络相关

随机推荐

  1. hbase 查看hfile文件

    emp表数据结构 hbase(main):098:0> scan 'emp' ROW COLUMN+CELL row1 column=mycf:depart, timestamp=1555846 ...

  2. [转帖]RSA算法与DSA算法的区别

    RSA算法与DSA算法的区别 https://cloud.tencent.com/developer/news/254061 文章来源:企鹅号 - SuperFullStack 本文译自:StackE ...

  3. 小记----采集之Xpath

    一.XPATH简介   Xpath是XML路径语言,它是一种确定XML文档中某部分位置的语言 二.XPATH语法  XPATH使用路径表达式在XML文档中选取节点.节点是通过沿着路径或者step来选取 ...

  4. Elasticsearch操作索引

    目录 操作索引 1. 基本概念 2. 创建索引 2.1 语法 2.2查看索引设置 2.3.删除索引 2.4 映射配置 2.5 新增数据 2.6 修改数据 2.7 删除数据 3. 查询 3.1 基本查询 ...

  5. sqlserver2008 批量导出所有的作业

    SQl server 代理 -- 选中作业 -- 按 F7,弹出 对象资源管理详细信息 ,里面对作业多选以后右键就有导出 sql的菜单了

  6. 单点登录之ajax跨域实现

    需求:相同根域名或不同根域名的两个域名,实现单点登录登出 原理: 以b站为例,b站的账号登录域名为passport.bilibili.com.主站为www.bilibili.com,游戏站为www.b ...

  7. iconv - 字符集转换

    总览 (SYNOPSIS) iconv [-f encoding] [-t encoding] [inputfile ...] 描述 (DESCRIPTION) iconv 程序 把 文本 从 一种 ...

  8. spring容器启动完成后加载自定义逻辑

    业务需求中,可能会有一些逻辑需要在应用启动完成后,例如字典缓存,资源池初始化等等,代码如下 public class InitApplication implements ApplicationCon ...

  9. Linux man学习

    5 man    man是manual的简写,Linux求助的工具    man  命令行,如 man  date 在我学习鸟哥私房菜的时候,也称man为man page  手册页入口:1 用户指令2 ...

  10. (转) 修改weblogic部署的应用名称

    通过weblogic管理后台console进行发布本地项目的时候,它会默认以WEB-INF的上一级目录作为访问路径, 如,假如你的项目WEB-INF目录的上一层是WebRoot,那么发布后, 访问的路 ...