[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();
        }
    }
}


时间: 2024-11-01 01:33:39

[Java]套接字地址InetAddress讲解的相关文章

【网络编程1】Java套接字Socket

这篇博客是本人学习<Java网络程序设计>书中第4章套接字的学习总结.初学者网友学习这篇Java套接字文章,如果难于理解文章前面理论部分,可以先运行后面的程序,边看运行后面的程序边理解前面的原理,这对初学者是最好的方法.所有源代码都在文章后面我的github链接代码中. --惠州学院 13网络工程 吴成兵 20160607 目录 1 目录 1 一 流套接字概述 二 服务器套接字ServerSocket 21 ServerSocket的工程过程 22 ServerSocket构造方法 23 Se

Android AdbCommandRejectedException和cannot bind to套接字地址(协议/网络地址/端口)只允许使用一次

转载请标明出处: http://blog.csdn.net/DJY1992/article/details/72628622 本文出自:[奥特曼超人的博客] 安装apk时,出现错误: com.Android.ddmlib.AdbCommandRejectedException:device offline Error while Installing APK 网上百度是有三种方法: 可以在sdk的文件中找到plattform-tools,到这个文件夹里面去可以找到adb, 双击adb,就可以重新

服务器80/21端口用telnet测试正常,但运行时提示“每个套接字地址只允许使用一次”错误。

问题描述 服务器80/21端口用telnet测试正常,但运行时提示"每个套接字地址只允许使用一次"错误. 用telnet测试万网提供的服务器80/21端口正常,但运行时提示"每个套接字地址只允许使用一次"错误.若把端口换为4567就能正常运行,但此端口没有开放.部分源代码如下 IPEndPoint localep = new IPEndPoint(IPAddress.Parse("121.42.134.161"), int.Parse("

如何编写简单的配合认证的基于JAVA套接字的通信程序

问题描述 我是一个初学者,现在正在编写一个配合认证的基于JAVA套接字的通信程序.老师要求:终端1和终端2要进行通信,必需通过第三台机器的简单认真.哪位高手帮帮忙吧!

Java套接字编程(下)

自寻址套接字(Datagram Sockets) ,因为使用流套接字的每个连接均要花费一定的时间,要减少这种开销,网络API提供了第二种套接字:自寻址套接字(datagram socket),自寻址使用UDP发送寻址信息(从客户程序到服务程序或从服务程序到客户程序),不同的是可以通过自寻址套接字发送多IP信息包,自寻址信息包含在自寻址包中,此外自寻址包又包含在IP包内,这就将寻址信息长度限制在60000字节内.图2显示了位于IP包内的自寻址包的自寻址信息. 与TCP保证信息到达信息目的地的方式不

Java套接字编程(上)

用Java开发网络软件非常方便和强大,Java的这种力量来源于他独有的一套强大的用于网络的 API,这些API是一系列的类和接口,均位于包java.net和javax.net中.在这篇文章中我们将介绍套接字(Socket)慨念,同时以实例说明如何使用Network API操纵套接字,在完成本文后,你就可以编写网络低端通讯软件. 什么是套接字(Socket)? Network API是典型的用于基于TCP/IP网络Java程序与其他程序通讯,Network API依靠Socket进行通讯.Sock

Java套接字编程(上)(2)

Socket类 当客户程序需要与服务器程序通讯的时候,客户程序在客户机创建一个socket对象,Socket类有几个构造函数.两个常用的构造函数是 Socket(InetAddress addr, int port) 和 Socket(String host, int port),两个构造函数都创建了一个基于Socket的连接服务器端流套接字的流套接字.对于第一个InetAddress子类对象通过addr参数获得服务器主机的IP地址,对于第二个函数host参数包被分配到InetAddress对象

Java套接字编程(下)(1)

自寻址套接字(Datagram Sockets) ,因为使用流套接字的每个连接均要花费一定的时间,要减少这种开销,网络API提供了第二种套接字:自寻址套接字(datagram socket),自寻址使用UDP发送寻址信息(从客户程序到服务程序或从服务程序到客户程序),不同的是可以通过自寻址套接字发送多IP信息包,自寻址信息包含在自寻址包中,此外自寻址包又包含在IP包内,这就将寻址信息长度限制在60000字节内.图2显示了位于IP包内的自寻址包的自寻址信息. 与TCP保证信息到达信息目的地的方式不

Java套接字编程(上)(3)

编程 ServerSocket类 由于SSClient使用了流套接字,所以服务程序也要使用流套接字.这就要创建一个ServerSocket对象,ServerSocket有几个构造函数,最简单的是ServerSocket(int port),当使用ServerSocket(int port)创建一个ServerSocket对象,port参数传递端口号,这个端口就是服务器监听连接请求的端口,如果在这时出现错误将抛出IOException异常对象,否则将创建ServerSocket对象并开始准备接收连