最近有業務涉及到記錄網絡主機的地址,因此回顧一下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; } } } }
執行結果: