解決方案
獲取主機(jī)名
Dns 類提供了一組用于域名系統(tǒng) (DNS) 操作的靜態(tài)方法。
Dns.GetHostName();
我們可以使用Dns.GetHostName()方法來獲取本地計(jì)算機(jī)的主機(jī)名, 這是一個(gè)靜態(tài)方法。該方法調(diào)用操作系統(tǒng)的網(wǎng)絡(luò)棧,以獲取計(jì)算機(jī)的主機(jī)名。主機(jī)名是一個(gè)用來標(biāo)識網(wǎng)絡(luò)上的設(shè)備的名稱。在網(wǎng)絡(luò)中,每個(gè)設(shè)備都有一個(gè)唯一的主機(jī)名,通過主機(jī)名可以在網(wǎng)絡(luò)中進(jìn)行設(shè)備間的通信。
獲取IP地址
Dns.GetHostAddresses(hostName);
獲取到主機(jī)名后,我們使用Dns.GetHostAddresses(hostName)方法來獲取IP列表,這也是一個(gè)靜態(tài)方法,用于獲取指定主機(jī)名(或 IP 地址字符串)對應(yīng)的 IP 地址列表。它接受一個(gè)主機(jī)名或 IP 地址作為參數(shù),并返回一個(gè) IPAddress[] 數(shù)組,其中包含與該主機(jī)名或 IP 地址關(guān)聯(lián)的所有 IP 地址。
該方法首先嘗試解析參數(shù)中傳入的主機(jī)名。如果傳入的是一個(gè)有效的主機(jī)名,它將查詢 DNS 服務(wù)器以查找與該主機(jī)名對應(yīng)的 IP 地址。如果找到了相關(guān)的 IP 地址,將返回一個(gè)包含這些 IP 地址的數(shù)組。
另外,如果傳入的參數(shù)是一個(gè)有效的 IP 地址字符串(例如:“192.168.0.1”),那么方法將直接將該字符串解析為一個(gè) IPAddress 對象并放入數(shù)組中返回。
該方法在解析過程中,如果遇到了問題或訪問權(quán)限的限制,會(huì)拋出異常,如 SocketException 或 SecurityException。
過濾IPv4地址
可以通過一個(gè)枚舉值A(chǔ)ddressFamily.InterNetwork來過濾IPv4地址。
AddressFamily 是一個(gè)枚舉類型,定義了不同的網(wǎng)絡(luò)地址類型。其中,InterNetwork 表示 IPv4 地址,InterNetworkV6 表示 IPv6 地址,Unix 表示 Unix 域套接字地址等。
函數(shù)
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System;
public static List<string> GetIPv4Addresses()
{
string hostName = Dns.GetHostName();
IPAddress[] addresses = Dns.GetHostAddresses(hostName);
List<string> ipv4Addresses = new List<string>();
foreach (IPAddress address in addresses)
{
// 判斷是否為IPv4地址
if (address.AddressFamily == AddressFamily.InterNetwork)
{
ipv4Addresses.Add(address.ToString());
}
}
return ipv4Addresses;
}
該函數(shù)將返回找到的所有IPv4地址,調(diào)用后會(huì)得到一個(gè)包含所有找到的IPv4地址的列表。如果沒找到IPv4地址,則返回一個(gè)空列表。
函數(shù)調(diào)用
打印出找到的所有IPv4地址。
函數(shù)調(diào)用如下:
List<string> ipv4Addresses = GetIPv4Addresses();
foreach (string address in ipv4Addresses)
{
Console.WriteLine(address);
}
運(yùn)行結(jié)果
文章來源:http://www.zghlxwxcb.cn/news/detail-737857.html
其他文章
有了局域網(wǎng)IP,我們就可以通過UDP來實(shí)現(xiàn)局域網(wǎng)通訊,參考文章C#實(shí)現(xiàn)局域網(wǎng)之間互相傳遞消息
安卓獲取當(dāng)前設(shè)備的局域網(wǎng)IP地址文章來源地址http://www.zghlxwxcb.cn/news/detail-737857.html
到了這里,關(guān)于C#如何獲取當(dāng)前主機(jī)的局域網(wǎng)IP的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!