java - windows下有多少个network interface

 晨心晨艺日记 发布于 2022-11-05 22:57

发现Java中可以用NetworkInterface类的静态方法getNetworkInterfaces()来获取当前主机的network interface列表,把书上的代码运行了一下发现,windows下有20多个interface,linux(虚拟机中)下则只有lo和enp0s3的结果。

package chap2;

import java.net.*;
import java.util.Enumeration;

public class InetAddressExample {
    public static void main(String[] args){
        try{
            EnumerationinterfaceList=NetworkInterface.getNetworkInterfaces();
            if(null==interfaceList){
                System.out.println("--No intercaces found--");
            }else{
                while(interfaceList.hasMoreElements()){
                    NetworkInterface iface=interfaceList.nextElement();
                    System.out.println("Interface "+iface.getName()+":");
                    Enumeration addrList=iface.getInetAddresses();
                    if(!addrList.hasMoreElements()){
                        System.out.println("\t(No addresses for this interface)");
                    }
                    while(addrList.hasMoreElements()){
                        InetAddress address=addrList.nextElement();
                        System.out.print("\tAddress "+((address instanceof Inet4Address?"(v4)"
                                :(address instanceof Inet6Address?"(v6)":"(?)"))));
                        System.out.println(": "+address.getHostAddress());
                    }
                }
            }
        }catch(SocketException se){
            System.out.println("Error getting network interfaces:" + se.getMessage());
        }

        for(String host:args){
            try{
                System.out.println(host + ":");
                InetAddress[] addressList=InetAddress.getAllByName(host);
                for(InetAddress address: addressList){
                    System.out.println("\t"+address.getHostName()+"/"+address.getHostAddress());
                }
            }catch(UnknownHostException e){
                System.out.println("\tUnable to find address for "+host);
            }
        }
    }
}

然后设定args参数为InetAddressExample www.mkp.com blah.blah 129.35.69.7,运行,windows下结果为:

Interface lo:
    Address (v4): 127.0.0.1
    Address (v6): 0:0:0:0:0:0:0:1
Interface net0:
    (No addresses for this interface)
Interface net1:
    (No addresses for this interface)
Interface net2:
    (No addresses for this interface)
Interface ppp0:
    (No addresses for this interface)
Interface eth0:
    (No addresses for this interface)
Interface eth1:
    (No addresses for this interface)
Interface eth2:
    (No addresses for this interface)
Interface ppp1:
    (No addresses for this interface)
Interface net3:
    (No addresses for this interface)
Interface eth3:
    Address (v6): fe80:0:0:0:5877:3f73:9b68:fc3a%11
Interface net4:
    Address (v6): fe80:0:0:0:0:100:7f:fffe%12
Interface net5:
    Address (v4): 192.168.1.107
    Address (v6): fe80:0:0:0:9d04:dd45:b85f:d2d2%13
Interface net6:
    (No addresses for this interface)
Interface net7:
    (No addresses for this interface)
Interface eth4:
    (No addresses for this interface)
Interface eth5:
    (No addresses for this interface)
Interface eth6:
    Address (v4): 192.168.56.1
    Address (v6): fe80:0:0:0:3087:4afc:3312:d234%18
Interface net8:
    (No addresses for this interface)
Interface eth7:
    (No addresses for this interface)
Interface net9:
    Address (v6): fe80:0:0:0:0:5efe:c0a8:3801%21
Interface net10:
    Address (v6): fe80:0:0:0:dd85:135e:2753:3e9a%22
Interface eth8:
    (No addresses for this interface)
Interface net11:
    (No addresses for this interface)
Interface net12:
    Address (v6): fe80:0:0:0:0:5efe:c0a8:16b%25
Interface net13:
    (No addresses for this interface)
Interface eth9:
    (No addresses for this interface)
Interface eth10:
    (No addresses for this interface)
Interface eth11:
    (No addresses for this interface)
Interface eth12:
    (No addresses for this interface)
Interface eth13:
    (No addresses for this interface)
Interface eth14:
    (No addresses for this interface)
Interface eth15:
    (No addresses for this interface)
Interface eth16:
    (No addresses for this interface)
Interface eth17:
    (No addresses for this interface)
Interface eth18:
    (No addresses for this interface)
Interface eth19:
    (No addresses for this interface)
Interface eth20:
    (No addresses for this interface)
Interface net14:
    (No addresses for this interface)
Interface eth21:
    (No addresses for this interface)
Interface eth22:
    (No addresses for this interface)
Interface eth23:
    (No addresses for this interface)
Interface net15:
    (No addresses for this interface)
Interface eth24:
    (No addresses for this interface)
Interface eth25:
    (No addresses for this interface)
Interface eth26:
    (No addresses for this interface)
www.baidu.com:
    www.baidu.com/115.239.211.110
    www.baidu.com/115.239.210.27
blah.blah:
    blah.blah/60.191.124.236
129.35.69.7:
    129.35.69.7/129.35.69.7

而同样的代码,在虚拟机中的archlinux中运行结果为:

感觉windows下这么多interface,不知道有什么用处?这么多interface正常吗(是不是只有我的电脑上是这样的?我通过无线路由器上网。。)?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有