[Java]套接字地址InetAddress讲解

package com.sjf;

import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;
import java.util.Enumeration;

/**
 * 
 * @author sjf0115
 *
 */
public class InetAddressExample {
    public static void main(String[] args)
    {
        // Get the network interfaces and associated for this host
        try
        {
            NetworkInterface networkInterface = null;
            // 获得该主机每一个接口的信息
            Enumeration<NetworkInterface> interfaceList = NetworkInterface.getNetworkInterfaces();
            if(interfaceList == null)
            {
                System.out.println("--No interfaces found--");
            }//if
            else
            {
                while(interfaceList.hasMoreElements())
                {
                     networkInterface = interfaceList.nextElement();
                     // 接口名称
                     System.out.println("Interface->"+networkInterface.getName());
                     // 获取与接口相关联的地址 根据主机的不同配置 可能包含IPV4或IPV6地址
                     Enumeration<InetAddress> inetAddressList = networkInterface.getInetAddresses();
                     if(inetAddressList == null)
                     {
                         System.out.println("--No address for this NetworkInterface--");
                     }//if
                     else
                     {
                         InetAddress address = null;
                         while(inetAddressList.hasMoreElements())
                         {
                             address = inetAddressList.nextElement();
                             // 对每个地址进行检测判断属于哪个IP地址子类
                             System.out.print(address instanceof Inet4Address ? "(v4)" : (address instanceof Inet6Address ? "(v6)" : "(?)"));
                             // 打印IP地址
                             System.out.println(":"+address.getHostAddress());
                         }//while
                     }
                }//while
            }
        }
        catch (Exception e) 
        {
        }

        String host = "www.baidu.com";
        try 
        {
            // 一个名字可能关联了多个数字地址 该方法返回一组与给定主机名相关联的所有地址的实例
            InetAddress[] addressesList = InetAddress.getAllByName(host);
            for(InetAddress address : addressesList)
            {
                System.out.println(address.getHostName()+"  "+address.getHostAddress());
            }//for
            // Determines the IP address of a host, given the host‘s name.
            InetAddress address2 = InetAddress.getByName(host);
            System.out.println(address2.getHostName()+" "+address2.getHostAddress());
            // Returns the local host.
            InetAddress address3 = InetAddress.getLocalHost();
            System.out.println(address3.getHostName()+" "+address3.getHostAddress());

        } 
        catch (UnknownHostException e) 
        {
            e.printStackTrace();
        }
    }
}

技术分享

技术分享

技术分享
技术分享

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。