在網路管理或應用程式偵錯過程中,經常需要取得伺服器的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中文網其他相關文章!