[英]C# Parsing acquired address to an IP address
編程新手,但嘗試自學一些學校尚未向我展示的領域。
該項目正在運行的宏偉計划是接受客戶端與服務器的連接。 在控制台窗口中,它將顯示連接時間。 我還試圖使其顯示客戶端IP地址以進行日志記錄。 以下是我所擁有的,但無法正確解析。
//Console Output
string IPAddress = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString();
IPAddress address = IPAddress.Parse(ipAddress);
Console.WriteLine("New TCP connection made at " + "{0:g}", DateTime.Now + IPAddress);
如果我忽略“ IPAddress address ...”行,它將顯示很長的,未解析的地址= p
您需要查看地址列表中的所有IP地址,並丟棄IPV6地址。
IPAddress[] ipv4Addresses = Array.FindAll(
Dns.GetHostEntry(string.Empty).AddressList,
a => a.AddressFamily == AddressFamily.InterNetwork);
請參閱此鏈接以了解AddressFamily類型。
我還試圖使其顯示客戶端IP地址以進行日志記錄。
請記住,客戶端上可能有多個NIC,即有線/無線(以及多個NIC)。 這意味着將有多個IP地址,最有可能是IPv4和IPv6地址的混合。
使用Dns.GetHostEntry方法時,傳遞一個空字符串作為主機名將返回本地主機的IPv4地址:
IPHostEntry entry = Dns.GetHostEntry( string.Empty );
或者,您可以使用:
IPHostEntry entry = Dns.GetHostEntry( Dns.GetHostName() );
然后,要查找所有地址,請使用AddressFamily Enumeration :
var addresses = entry.AddressList.Where( x => x.AddressFamily == AddressFamily.InterNetwork );
其中AddressFamily.InterNetwork
= IP版本4的地址。
從這里,您可以根據需要遍歷addresses
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.