InetAddress
什么是InetAddress?
- 表示的是ip地址
如何构造一个InetAddress?
- getByName(String name) 传入一个域名,通过这个域名来构造一个ip地址,这个方法会建立网络连接,连接到DNS服务器查找域名对应的ip地址,如果出现网络问题会抛出异常。也可以传入一个字符串类型的ip地址,但是这时不会立即去查找DNS,只有当调用getHostName()的时候才会查找
- getByAddress(byte[]) ,传入一个字节数组表示的ip地址来构造对象,需要把大于128的数字转为byte类型,转换完成有可能是负数,这种方法可以为不能建立网络连接的时候构造ip对象
- InetAddress 需要查找DNS,所以这个类中有缓存,每次先从缓存中查找,如果没有找到才去查DNS,对于成功或者失败的查找结果会建立缓存,缓存的时间是可以通过系统属性来控制的
得到了InetAddress对象,能干什么呢?
- getHostName()得到主机的名字和ip地址
- getHostAddress()得到主机的ip地址字符串
- getAddress()得到ip地址的字节数组,如果是负数要+256来转换为正数
NetworkInterface
什么是网络接口?
- 表示的是网络接口,可以是实际的物理网卡也可以是虚拟网卡
如何获取网卡信息?
- getByName(String name) 通过名字来获取NetworkInterface
- getByInetAddress(InetAddress address) 通过ip地址来获取网络接口
- getNetworkInterfaces() 可以获取所有的网络接口
获取了网卡后,可以得到那些信息?
- getInetAddresses() 得到这个和这个网卡绑定的所有ip地址,因为一个网卡上可以绑定多个ip地址
- getName() 得到这个网卡的名字,如 eh0
- getDisplayName() 和getName差不多