在网络管理或应用程序调试过程中,经常需要获取服务器的IP地址。本文旨在阐明语法并提供一种优化的方法来检索此信息。
要确定计算机的外部IP地址(对互联网可见),请使用以下代码:
<code class="language-csharp">string externalIP = new WebClient().DownloadString("https://ipv4.icanhazip.com/");</code>
此代码利用“iCanHazIP”服务来获取服务器的公共IP地址。
要检索服务器的内部IP地址(在本地网络内),请使用以下技术:
<code class="language-csharp">string localIP = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(ip => ip.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault()?.ToString();</code>
此代码迭代与服务器主机名关联的IP地址列表,并选择与IPv4地址族对应的地址。
问题中提供的代码是一种有效的方法,但可以增强其可读性和效率。以下修改后的版本包含这些改进:
<code class="language-csharp">string localIP = null; var host = Dns.GetHostEntry(Dns.GetHostName()); foreach (var ip in host.AddressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { localIP = ip.ToString(); break; } }</code>
此版本使用更清晰的循环结构,并对FirstOrDefault()
可能返回null的情况进行了处理,避免了潜在的异常。 它直接迭代IP地址列表,找到第一个IPv4地址后立即退出循环,提高了效率。
以上是如何在C#中高效获取服务器的内部和外部IP地址?的详细内容。更多信息请关注PHP中文网其他相关文章!