最近有业务涉及到记录网络主机的地址,因此回顾一下java中InetAddress类的内容。 java
InetAddress 类主要表示IP地址,这个类有两个子类:Inet4Address、Inet6Address,一个用于表示IPV4,另外一个表示IPV6协议。c#
IP地址通常在实际中看到的大部分IP地址都是以十进制的数据形式表示的,"192.168.1.2",IP地址格式:IP地址=网络地址+主机地址,网络号:用于识别主机所在的网络,主机号:用于识别该网络中的主机。网络
IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何须要的人,D类用于组播,E类用于实验,各种可容纳的地址数目不一样。测试
No.spa |
地址分类.net |
地址范围code |
1orm |
A类地址对象 |
1.0.0.1~126.255.255.254ip |
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; } } } }
执行结果: