Skocz do zawartości

[Delphi] Jak sprawdzić publiczny, zewnętrzny adres ip


lochness

Polecane posty

Dziwne zadałeś pytanie jak pobrać publiczne IP

 

Ale postaram Ci odpowiedzieć publiczne IP jest automatycznie przydzielane tobie przez twojego usługodawce (np. TP) żeby mieć stałe IP (czyli zawsze np. 83.222.222.222) to musisz skonsultować się z operatorem (pewnie za to zapłacisz) i wtedy masz stałe IP a tak to zawsze masz zmienne czyli co na nowo się połączysz z siecią masz inne IP

Są metody aby łączyć się inaczej tak jakby na stałe z tobą poprzez DNS do tego służą programy np zobacz na tej www.no-ip.pl lub na tej www.no-ip.com stronie

 

--------------------------------------------

Dodano przez Integer:

 

Powyżej było jak programowo w Delphi sprawdzić zewnętrzny adres IP, a teraz łyk informacji.

 

Jaki mam adres IP?

Należy rozróżnić adres wewnętrzny/ lokalny od zewnętrznego/ publicznego.

 

Jak ręcznie sprawdzić wewnętrzny/ lokalny Adres IP?

Dla użytkowników np. Windows XP będzie to zwykle :

Panel Sterowania \ Połączenia sieciowe i zapewne będzie tam co najmniej jedno połączenie lokalne,

- zaznaczamy dowolne lokalne,

- po lewej w zadaniach sieciowych wybieramy wyświetl stan tego połączenia

- z zakładek wybieramy zakładkę "Obsługa" i tu mamy wypisane dane o naszym Adresie IP wewnętrznym, maska podsieci i brama domyślna.

 

Ten sam efekt można osiągnąć w systemie Windows XP/2000 poprzez cmd. Należy w pierwszej kolejności uruchomić wiersz poleceń z menu Start / Uruchom, wpisując cmd. Następnie w wierszu poleceń należy wpisać komendę ipconfig.

 

Inna sprawa ze w większości przypadków, gdzie wymagany jest lokalny adres IP np w przypadku bazy danych MySQL czy programowym wykrywaniu wystarczy w Delphi wpisać LocalHost

 

Jeżeli Twój adres IP znajduje się w jednym z przedziałów:

* 10.0.0.0 – 10.255.255.255 (maska: 255.0.0.0)

* 172.16.0.0 – 172.31.255.255 (maska: 255.240.0.0)

* 192.168.0.0 – 192.168.255.255 (maska: 255.255.255.0)

to znaczy, że Twój adres IP jest adresem prywatnym, który nie jest widziany na zewnątrz.

W sieci Internet jesteś natomiast widziany pod zupełnie innym adresem, zwanym adresem publicznym.

 

Jak ręcznie sprawdzić zewnętrzny/ publiczny Adres IP?

Jak pobrać zewnętrzny adres IP?

Grając w grę internetową lub używając bazy danych na zewnętrznym serwerze używamy IP publicznego, który służy do połączenia z kilkoma komputerami poprzez sieć Internet.

 

Zewnętrzny adres danego komputera można ręcznie sprawdzić jaki jest korzystając z tego samego linka który był użyty w powyższym kodzie Delphi.

http://dynupdate.no-ip.com/ip.php

lub na stronie z większą gamą narzędzi http://ip.lanpolis.pl/ - można tu też sprawdzić nazwę Twojego hosta i kilka innych przydatnych informacji.

Inne strony do łatwego pobierania publicznego adresu IP: http://checkip.dyndns.org:8245/

Link do komentarza
Udostępnij na innych stronach

Pytający:

Innego sposobu, niż usługa gdzieś na jakiejś maszynie, nie ma - możesz ewentualnie bawić sie w wyciąganie z routera po UPnP, ale ktoś może być za kilkoma przełącznikami, albo urządzenie nie udostępniać tego etc. Dlatego proponuję wykorzystać właśnie HTTP + gdzieś jakiś skrypcik.

Obrazek
Link do komentarza
Udostępnij na innych stronach

Możesz użyć kodu poniżej, pisane pod Delphi 4, ale pod nowszymi też się powinno skompilować

bez problemów. Program wkleja IP do schowka. Korzysta raczej z pewnego i stabilnego serwisu.

program copy_ip;

{$APPTYPE CONSOLE}

uses
WinInet, ClipBrd;

{$R *.RES}

type
  TCharSet = set of Char;

function StripNonConforming(const S: string;
const ValidChars: TCharSet): string;
var
  DestI : Integer;
  SourceI : Integer;
begin
  SetLength(Result, Length(S));
  DestI := 0;
  for SourceI := 1 to Length(S) do
     if S[SourceI] in ValidChars then
        begin
           Inc(DestI);
           Result[DestI] := S[SourceI]
        end;
     SetLength(Result, DestI)
end;

function GetIPFromWeb(const URL : string): string;
var
  hSession, hURL : HInternet;
  Buffer : array[1..15] of Char;
  BufferLen : integer;
  AppName: string;
begin
  Result := '';
  AppName := 'olesio';
  hSession := InternetOpen(PChar(AppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
     hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
     repeat
        InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
     until BufferLen = 0;
     Result := Buffer;
  finally
     InternetCloseHandle(hURL);
     InternetCloseHandle(hSession);
  end;
end;

function CheckUrl(Url : string) : boolean;
var
  hSession, hfile : hInternet;
  dwindex, dwcodelen : integer;
  dwcode : array[1..20] of Char;
  Res : PChar;
begin
  if Pos('http://', url) = 0 then
  Url := 'http://' + Url;
  Result := false;
  hSession := InternetOpen('InetURL:/1.0',INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
  if Assigned(hsession) then
  begin
     hfile := InternetOpenUrl( hsession, pchar(url), nil, 0, INTERNET_FLAG_RELOAD, 0);
     dwIndex := 0;
     dwCodeLen := 10;
     HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
     Res := PChar(@dwcode);
     Result := (Res = '200') or (Res = '302');
     if Assigned(hfile) then InternetCloseHandle(hfile);
     InternetCloseHandle(hsession);
  end;
end;

var
  ShowIPUrl,                    // adres serwisu z pod którego pobierane jest IP zewnętrzne
  Your_IP : string;              // zmienna, do której zapisywane jest IP
begin
  ShowIPUrl := 'http://dynupdate.no-ip.com/ip.php';
  if CheckUrl(ShowIPUrl) = True then
     begin
        Your_IP := StripNonConforming(GetIPFromWeb(ShowIPUrl), ['0'..'9', '.']);
        ClipBoard.AsText := Your_IP;
     end
     else
     begin
        ClipBoard.AsText := 'Can not check IP at site: ' + ShowIPUrl;
     end;
end.

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...