C#将获取的地址解析为IP地址

C#将获取的地址解析为IP地址,c#,parsing,ip,C#,Parsing,Ip,刚开始编程,但试图自学一些学校尚未教给我的领域 该项目的主要方案是接受到服务器的客户端连接。在控制台窗口中,它将显示连接时间。我还试图让它显示客户端的IP地址,以便进行日志记录。下面是我所拥有的,但我无法正确解析它 //Console Output string IPAddress = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.GetValue(0).ToString(); IPAddress ad

刚开始编程,但试图自学一些学校尚未教给我的领域

该项目的主要方案是接受到服务器的客户端连接。在控制台窗口中,它将显示连接时间。我还试图让它显示客户端的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);
有关族类型,请参见

我还试图让它显示客户端的IP地址 伐木的缘故

请记住,客户端上可能有多个NIC,即有线/无线(以及多个有线NIC)。这意味着将有多个IP地址,而且很可能是IPv4和IPv6地址的混合

使用该方法时,传递空字符串作为主机名将返回本地主机的IPv4地址:

IPHostEntry entry = Dns.GetHostEntry( string.Empty );
或者,您可以使用:

IPHostEntry entry = Dns.GetHostEntry( Dns.GetHostName() );
然后,要查找所有地址,请使用:

其中
AddressFamily.InterNetwork
=IP版本4的地址


从这里,您可以根据需要遍历
地址。

您可以显示“长而丑陋、未解析的地址”吗DN2013年2月5日10:55:46 PMfe80::c139:f627:29c3:29d1%10建立了新的TCP连接您确定没有混淆IPv6地址是丑陋的吗?这不是一个有效的假设。您应该将输出添加到您的问题中。尝试查看我是否可以让它与提供的建议一起工作。有些东西还是很新的,所以我需要一点时间才能弄明白:/
var addresses = entry.AddressList.Where( x => x.AddressFamily == AddressFamily.InterNetwork );