DnsGetHostEntry获取错误的IP地址

时间:2012-12-05 14:45:35

标签: c# sockets

我有以下问题。我尝试通过socket.Bind()函数绑定套接字。但它总是呕吐。我猜它是因为它从

获取内部ip

IPHostEntry ipHe = Dns.GetHostEntry(Dns.GetHostName());

功能。我认为这个问题是由我的静态IP引起的。 Ipconfig /all显示我的Ip与109.90.xxx.xxx相似,程序得到的Ip为192.168.xxx.xxx

它抛出的错误是“请求的地址在其上下文中无效”

2 个答案:

答案 0 :(得分:0)

可能有多个与您的主机关联的IP地址。尝试循环返回的ip地址列表。

foreach (IPAddress ip in ipHe.AddressList)
{
    Console.WriteLine("    {0}", ip);
}

答案 1 :(得分:0)

Dns.GetHostEntry查询DNS,因此可能会出现问题。在命令提示符下,nslookup {your hostname}返回什么?

基本上,没有什么可以阻止DNS和您的本地计算机失控。这可能是故意的,也可能表示存在问题,具体取决于您的本地网络要求和配置。

为了独立于DNS获取本地IP地址,您需要直接查询接口:查看System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(),然后您可以使用GetIPProperties()并在每个接口上调用{{1}},这两者都返回多播和单播IP地址。