[Delphi]Pobieranie ip

0

Muszę napisać program który po wykryciu połączenia z internetem automatycznie wyśle mój adres ip w pliku tekstowym na serwer ftp. U mnie wszystko jest ok, ale u kumpla który oprócz neostrady ma jeszcze lana nie działa tak jak bym chciał. Dokładniej: Zamiast wysyłać adres neostrady(83.x.x.x) wysyła adres jaki ma przypisany do karty sieciowej(192.x.x.x).
Korzystałem z tego:

var
  wVersionRequested:WORD;
  wsaData:TWSAData;
  p:PHostEnt;
  s:array[0..128] of char;
  p2:pchar;

GetHostName(@s, 128);
p := GetHostByName(@s);
p2:=iNet_ntoa(PInAddr(p^.h_addr_list^)^);

Co zrobić aby pobierało adres neostrady lub ewentualnie oba adresy?

0

Możesz pobrać sobie IP z jakiejś strony np. www.showmyip.com albo www.whatismyip.com.

0

Dzięki ale chodzi mi o to żeby bezpośrednio z mojego kompa pobrać, ew. z serwera ftp z którym się łączę(może jest jakaś komenda która zwróci mój ip). Może być przez IdFTP bo tego używam do łączenia z FTP.

0

http://www.from.okay.pl/sioux/files/RFC%20959%20-%20File%20Transfer%20Protocol.txt - jest tu opisana komenda STAT zwracająca m.in IP. Niestety nie każdy serwer ftp ją przyjmuje :/ .

0

Funkcja GetHost.... zwraca wszystkie IP trzeba doczytac

function GetIPs : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;

begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result := result + StrPas(inet_ntoa(pptr[I])){ +' '+ IPAddrToName(StrPas(inet_ntoa(pptr[I])))+#13#10};
//tu moze byc kilka adresow IP wiec powinna byc lista !!!!!!!!
Inc(I);
end;
WSACleanup;
end;

powinno dzialac !?

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