zom*_*bat 50 .net c# dns ipv4 ipv6
我在这里有一些代码在IPv4机器上运行良好,但在我们的构建服务器(IPv6)上它失败了.简而言之:
IPHostEntry ipHostEntry = Dns.GetHostEntry(string.Empty);
Run Code Online (Sandbox Code Playgroud)
GetHostEntry的文档说,传入string.Empty将获得localhost的IPv4地址.这就是我要的.问题是它在我们的IPv6机器上返回字符串":: 1:",我认为这是IPv6地址.
从任何其他IPv4机器ping机器可以提供良好的IPv4地址......并且从自身执行"ping -4 machinename"会给出正确的IPv4地址....但是从它自身定期ping它会产生":: 1:".
如何从本身获取此机器的IPv4?
Gar*_*ary 44
要查找所有本地IPv4地址:
IPAddress[] ipv4Addresses = Array.FindAll(
Dns.GetHostEntry(string.Empty).AddressList,
a => a.AddressFamily == AddressFamily.InterNetwork);
Run Code Online (Sandbox Code Playgroud)
或使用Array.Find或Array.FindLast如果你只想要一个.
IPHostEntry ipHostInfo = Dns.GetHostEntry(serverName);
IPAddress ipAddress = ipHostInfo.AddressList
.FirstOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
Run Code Online (Sandbox Code Playgroud)
小智 6
public Form1()
{
InitializeComponent();
string myHost = System.Net.Dns.GetHostName();
string myIP = null;
for (int i = 0; i <= System.Net.Dns.GetHostEntry(myHost).AddressList.Length - 1; i++)
{
if (System.Net.Dns.GetHostEntry(myHost).AddressList[i].IsIPv6LinkLocal == false)
{
myIP = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在公共变量中声明myIP和myHost并在表单的任何函数中使用.
| 归档时间: |
|
| 查看次数: |
96888 次 |
| 最近记录: |