프로그래밍 방식으로 공용 IP 주소에 액세스
라우터의 공용 IP 주소를 프로그래밍 방식으로 결정하는 것은 까다로울 수 있습니다. 이 기사에서는 외부 서비스에 의존하지 않고 이를 달성할 수 있는 여러 가지 방법을 살펴봅니다.
C# 구현(비동기)
이 C# 예제에서는 효율적인 IP 주소 검색을 위해 HttpClient
클래스와 비동기식 방법을 활용합니다.
<code class="language-csharp">using System; using System.Net.Http; using System.Threading.Tasks; using System.Net; public class ExternalIP { public static async Task<IPAddress> GetExternalIpAddressAsync() { string externalIpString; try { using (var client = new HttpClient()) { externalIpString = await client.GetStringAsync("http://icanhazip.com"); } } catch (Exception ex) { Console.WriteLine($"Error retrieving IP: {ex.Message}"); return null; } externalIpString = externalIpString.Replace("\r\n", "").Replace("\n", "").Trim(); if (IPAddress.TryParse(externalIpString, out var ipAddress)) { return ipAddress; } return null; } public static void Main(string[] args) { Task<IPAddress> externalIpTask = GetExternalIpAddressAsync(); externalIpTask.Wait(); IPAddress externalIp = externalIpTask.Result ?? IPAddress.Loopback; Console.WriteLine(externalIp); } }</code>
C# 구현(WebClient 사용 - 덜 선호됨)
기능적이지만 WebClient
클래스는 더 이상 사용되지 않는 것으로 간주됩니다. 비교를 위한 더 간단한 예는 다음과 같습니다.
<code class="language-csharp">using System; using System.Net; public class ExternalIP { public static void Main(string[] args) { string externalIpString; try { using (var client = new WebClient()) { externalIpString = client.DownloadString("http://icanhazip.com"); } } catch (Exception ex) { Console.WriteLine($"Error retrieving IP: {ex.Message}"); return; } externalIpString = externalIpString.Replace("\r\n", "").Replace("\n", "").Trim(); IPAddress externalIp = IPAddress.Parse(externalIpString); Console.WriteLine(externalIp); } }</code>
명령줄 대안
더 빠른 검색을 위해 다음 명령줄 옵션을 고려하세요.
wget -qO- http://bot.whatismyipaddress.com
curl http://ipinfo.io/ip
이러한 방법은 공용 IP 주소를 프로그래밍 방식으로 얻기 위한 다양한 접근 방식을 제공합니다. 최신 C# 개발에는 비동기식 HttpClient
방법을 권장합니다.
위 내용은 프로그래밍 방식으로 공용 IP 주소를 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!