Besoin d'aide pour Delphi (Avancé)

Besoin d'aide pour Delphi (Avancé) - Delphi/Pascal - Programmation

Marsh Posté le 17-10-2003 à 13:59:24    

Bonjour,  
Je suis a la recherche d'une fonction assé avancé. J'aimerais savoir comment faire pour récupérer son ip Externe (Internet). Je sais qu'il est possible de le faire avec le protocole UDP et un sockets ou winsock là, mais je ne sais pas l'utiliser enfin je cherche des informations dessus car je veux trouvé mon ip eterne sans etre bloquer par le routeur ou passerelle ou autres. Je veut avec l'ip externe de son pc et ne pas etre enfargé dans l'ip local. "192.168.100" <====celle-la. Je veux la vrai. Si vous savez comment merci de me faire par de la méthode.  
 
Language : Delphi 6 et inférieur  
 
Merci à l'avance
 
Le_Programmeur_Fou

Reply

Marsh Posté le 17-10-2003 à 13:59:24   

Reply

Marsh Posté le 17-10-2003 à 17:49:13    

Code :
  1. with TIdHTTP.Create(nil) do
  2.   try
  3.     s := Get('http://checkip.dyndns.org/');
  4.   finally
  5.     Free;
  6.   end;


s contiendra entre autres l'IP publique.
(si t'as pas le TIdHTTP, c'est le client HTTP des composants Indy)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-10-2003 à 23:50:12    

Ou bien sans utiliser les composants Indy, mais via l'unité Winsock :
 

Code :
  1. function GetIP: string;
  2. type
  3.    TaPInAddr = array [0..10] of PInAddr;
  4.    PaPInAddr = ^TaPInAddr;
  5. var
  6.    phe  : PHostEnt;
  7.    pptr : PaPInAddr;
  8.    Buffer : array [0..63] of char;
  9.    I    : Integer;
  10.    GInitData : TWSADATA;
  11. begin
  12.    WSAStartup($101, GInitData);
  13.    Result := '';
  14.    GetHostName(Buffer, SizeOf(Buffer));
  15.    phe := GetHostByName(buffer);
  16.    if phe = nil then Exit;
  17.    pptr := PaPInAddr(Phe^.h_addr_list);
  18.    I := 0;
  19.    while pptr^[I] <> nil do begin
  20.       result := StrPas(inet_ntoa(pptr^[I]^));
  21.       Inc(I);
  22.    end;
  23.  
  24.    WSACleanup;
  25. end;


 
Cette fonction n'est pas de moi, je l'avais initialement trouvée sur http://www.nsonic.de/Delphi/txt_WIS00375.htm

Reply

Marsh Posté le 19-10-2003 à 00:12:20    

T'as au moins lu la question ? :D
 
Ton code, chez moi ça me renvoie "192.168.0.21".
Alors que ma solution me renvoie ceci :


<html><head><title>Current IP Check</title></head>
<body bgcolor=white text=black>
 
 
Current IP Address: 213.132.148.31<!-- proxy --></body></html>


Message édité par antp le 19-10-2003 à 00:13:25

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-10-2003 à 13:48:41    

Oui, j'ai bien lu question... Cette fonction renvoit bien chez moi mon IP de connexion Internet. Maintenant il se peut que ça ne fonctionne pas chez toi car tu te trouves derrière un routeur ou un proxy ?

Reply

Marsh Posté le 19-10-2003 à 13:54:24    

bah oui, mais relis la question de départ où il disait connaître cette technique qui justement ne marche pas dans la cas d'un routeur [:mlc]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-10-2003 à 10:26:11    

dyndns ont changé et change souvent en ce moment la page de réponse :fou:
C relou pour parser


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 30-10-2003 à 03:25:23    

un autre site pour recuperer ton ip si dydns ne marche pas http://www.whatismyip.com/ ;)


Message édité par JWhy le 30-10-2003 à 03:25:52
Reply

Marsh Posté le 30-10-2003 à 13:41:37    

ça reste des méthodes pas super fiables à long terme... si le site est down, ou  si la page est légérement modifié, la récupération de l'ip ne fonctionnera plus...


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed