我有以下问题。socket.Bind()
我尝试通过该功能连接套接字。但它总是抛出。我猜是因为它从
IPHostEntry ipHe = Dns.GetHostEntry(Dns.GetHostName());
功能。我认为这个问题是由我的静态 IP 引起的。Ipconfig /all
显示我109.90.xxx.xxx
的 Ip 和程序获得的 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 地址。