最近有业务涉及到记录网络主机的地址,所以回顾一下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;
}
}
}
}
执行结果: