InetAddress

      最近有业务涉及到记录网络主机的地址,所以回顾一下java中InetAddress类的内容。         

        InetAddress 类主要表示IP地址,这个类有两个子类:Inet4Address、Inet6Address,一个用于表示IPV4,另一个表示IPV6协议。

        IP地址一般在实际中看到的大部分IP地址都是以十进制的数据形式表示的,"192.168.1.2",IP地址格式:IP地址=网络地址+主机地址,网络号:用于识别主机所在的网络,主机号:用于识别该网络中的主机。

        IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。

No.

地址分类

地址范围

1

A类地址

1.0.0.1~126.255.255.254

2

B类地址

128.0.0.1~191.255.255.254

3

C类地址

192.0.0.1~223.255.255.254

4

D类地址

224.0.0.1~239.255.255.254

5

E类地址

240.0.0.1~255.255.255.254

InetAddress类的常用方法:

No.

方法

类型

描述

1

public static InetAddress getByName(String host) throws UnknownHostException

普通

通过主机名称得到InetAddress对象

2

public static InetAddress getLocalHost() throws UnknownHostException

普通

通过本机得到InetAddress对象

3

public String getHostName()

普通

得到IP地址

4

public boolean isReachable(int timeout) throws IOException

普通

判断地址是否可达,同时指定超时时间

测试InetAddress类:

import java.net.InetAddress;
public class InetAddressDemo {
	public static void main(String[] args) throws Exception { 
		InetAddress locAdd = null; 		// 声明InetAddress对象
		InetAddress remAdd = null; 		// 声明InetAddress对象
		locAdd = InetAddress.getLocalHost();	// 得到本地InetAddress对象
		remAdd = InetAddress.getByName("www.baidu.com"); 	// 取得远程InetAddress
		System.out.println("本机IP地址:" 
				+ locAdd.getHostAddress());// 得到本地IP地址
		System.out.println("百度的IP地址:" 
				+ remAdd.getHostAddress());// 得到远程IP地址
		System.out.println("本机是否可达:" 
				+ locAdd.isReachable(5000));
	}
}

c#中获得本机ip:

        注意引用的是System.Net.NetworkInformation中的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;


namespace ConsoleApplication1
{
    class Program
    {      
        static void Main(string[] args) 
        {
            try
            {                
                string _ComputerName = System.Net.Dns.GetHostName();
                Console.WriteLine("主机名是:" + _ComputerName);
                System.Net.IPAddress[] _IPList = System.Net.Dns.GetHostAddresses(_ComputerName);
                for (int i = 0; i != _IPList.Length; i++)
                {
                    //遍历到当前本机的IP
                    if (_IPList[i].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        _IPList[i].ToString();
                      Console.WriteLine("IP地址:"+_IPList[i]);
                }
                }
                Console.ReadLine();
                }
          
            catch(Exception e)
            {
                throw;
            }
 
        
        } 
    }
}

执行结果:

172527_YD2Y_3544533.png

转载于:https://my.oschina.net/u/3544533/blog/1823653

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值