我有以下问题。我尝试通过socket.Bind()
函数绑定套接字。但它总是呕吐。我猜它是因为它从
IPHostEntry ipHe = Dns.GetHostEntry(Dns.GetHostName());
功能。我认为这个问题是由我的静态IP引起的。 Ipconfig /all
显示我的Ip与109.90.xxx.xxx
相似,程序得到的Ip为192.168.xxx.xxx
。
它抛出的错误是“请求的地址在其上下文中无效”
答案 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地址。