Publiczny adres IP bez zewnętrznych serwisów

0

Cześć,
czy da się w C# uzyskać publiczny adres IP bez żadnych zewnętrznych serwisów?

2

Co to znaczy? Chyba nie rozumiesz co to jest publiczny adres IP 🤔

0

Mam aplikację, która uruchomiona jest na jakimś urządzeniu np. na moim komputerze. I teraz chcę się dowiedzieć czy ten komputer na którym jest uruchomiona aplikacja jest podłączony do internetu a jeśli tak to jaki jest adres publiczny.

0

wejdz z niego na https://whatismyip.com a pozniej spróbuj się połączyć na tego ipka

2

Nie, nie da się tego zrobić "bezpośrednio". Musisz odpytać router, api lub stronę o publiczny adres.

0
AdamWox napisał(a):

Nie, nie da się tego zrobić "bezpośrednio". Musisz odpytać router, api lub stronę o publiczny adres.

Ok, dzięki za informację.

2

Bezpośrednio z aplikacji się nie da, to co możesz zrobić jeżeli nie chcesz korzystać z zewnętrznych/obcych API do pobierania adresu to utworzyć sobie swój własny serwis z jednym endpointem, który będzie zwracał adres IP z przychodzących requestów i opublikować go gdzieś na serwerze. Wtedy w swojej aplikacji robisz request do tej usługi i dostajesz jej adres IP.

[Route("myip")]
public class MyIPController : ControllerBase
{
  public ActionResult<string?> GetMyIp()
  {
    return HttpContext.Connection.RemoteIpAddress?.MapToIPv4().ToString();
  }
    }

screenshot-20221015084807.png

0

Bez łączenia z zewnętrznymi serwisami jeśli na komputerze jest publiczny IP to możesz sprawdzić to w ten sposób:

byte[][] LocalNetworks = {
     new byte[]{192,168,168},
     new byte[]{172,16,31},
     new byte[]{10,0,255} 
     };

var ipAddr = Dns.GetHostAddresses(Dns.GetHostName())
            .ToList()
            .FirstOrDefault(ip => 
                !LocalNetworks.Any(network =>
                    ip.GetAddressBytes()[0] == network[0] &&
                    (ip.GetAddressBytes()[1] >= network[1] && ip.GetAddressBytes()[1] <= network[2])
                ));

(Przy założeniu, że nikt nie zmodyfikował adresu IP).

Jeśli jest lokalny to pozostaje odpytanie DNS lub zewnętrznych serwisów (jak wspominali pozostali użytkownicy).

//Edit
Głupia pomyłka :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1