老师好 發表於 2022-9-8 09:48:00

关于在银河麒麟系统下获取本机IP地址失败的问题

<p>原来获取本机IP地址的方法(方法1):</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> items =<span style="color: rgba(0, 0, 0, 1)"> Dns.GetHostEntry(Dns.GetHostName()).AddressList
    .Where(s </span>=&gt; s.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork &amp;&amp; !<span style="color: rgba(0, 0, 0, 1)">System.Net.IPAddress.IsLoopback(s))
    .Select(s </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> s.ToString())
    .ToArray();</span></pre>
</div>
<p>同事反应,在麒麟系统下,调用Dns.GetHostEntry方法时会报错。</p>
<p>在网上搜到了另外的方法(方法2):</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> addressList =<span style="color: rgba(0, 0, 0, 1)"> System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
.Select(p </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> p.GetIPProperties())
.SelectMany(p </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> p.UnicastAddresses)
.Where(p </span>=&gt; p.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork &amp;&amp; !<span style="color: rgba(0, 0, 0, 1)">System.Net.IPAddress.IsLoopback(p.Address))
.Select(s </span>=&gt; s.Address.ToString()).ToArray();</pre>
</div>
<p>采用了.NET 6编写,在Ubuntu 22.04.1系统下试了一下,方法2能执行成功,正确获取IP地址。</p>
<p>但是试了一下,方法1也能正常获取IP地址。</p>
<p>然后在我这边的银河麒麟系统下试了一下,也是可以获取成功的。</p>
<p>所以目前不确定同事那边获取失败的具体原因,但是后来同事反应,用了新的接口,可以正常获取IP地址了。</p>
<p>所以大伙遇到类似的问题,也可以用方法2试一下。</p><br><br>
来源:https://www.cnblogs.com/wzwyc/p/16668423.html
頁: [1]
查看完整版本: 关于在银河麒麟系统下获取本机IP地址失败的问题