C# DNSGethodEntry获取错误的IP地址
我有以下问题。我尝试通过C# DNSGethodEntry获取错误的IP地址,c#,sockets,C#,Sockets,我有以下问题。我尝试通过socket.Bind()函数创建套接字。但它总是呕吐。我猜这是因为它从 IPHostEntry ipHe=Dns.GetHostEntry(Dns.GetHostName()) 功能。我认为这个问题是由我的静态IP造成的Ipconfig/all显示我的Ip类似于109.90.xxx.xxx,程序获得的Ip是192.168.xxx.xxx 它抛出的错误是“请求的地址在其上下文中无效”可能有多个ip地址与主机关联。尝试在返回的ip地址列表中循环 foreach (IPAdd
socket.Bind()函数创建套接字。但它总是呕吐。我猜这是因为它从
IPHostEntry ipHe=Dns.GetHostEntry(Dns.GetHostName())代码>
功能。我认为这个问题是由我的静态IP造成的Ipconfig/all
显示我的Ip类似于109.90.xxx.xxx
,程序获得的Ip是192.168.xxx.xxx
它抛出的错误是“请求的地址在其上下文中无效”可能有多个ip地址与主机关联。尝试在返回的ip地址列表中循环
foreach (IPAddress ip in ipHe.AddressList)
{
Console.WriteLine(" {0}", ip);
}
Dns.GetHostEntry
查询Dns,因此可能是错误的。在命令提示符下,nslookup{your hostname}
返回什么
基本上,没有什么可以阻止DNS和您的本地机器失步。这可能是故意的,也可能表明存在问题,具体取决于您的本地网络要求和配置
为了独立于DNS获取本地IP地址,那么您需要直接查询接口:查看System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
,然后可以对每个接口枚举并调用GetIPProperties()
,它同时返回多播和单播IP地址。您的家庭网络中可能有路由器吗?或者看起来您有一个与LAN的VPN网络连接…'nslookup默认服务器:cns1.cw.net地址:141.1.1.1'如何定义我的程序应该使用的接口?我通过GetAllNetworkInterfaces()获得了一堆接口,但似乎它使用了正确的接口,但只是得到了错误的地址只有一个ip 192.168.xxx.xxx
foreach (IPAddress ip in ipHe.AddressList)
{
Console.WriteLine(" {0}", ip);
}