begin process at 2010 02 10 03:52:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > COMMENT CONNAITRE SON IP PUBLIC

COMMENT CONNAITRE SON IP PUBLIC


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :ippublique, getpublicip, ip, adresse, internet Niveau :Débutant Date de création :09/07/2007 Vu / téléchargé :16 314 / 1 008

Auteur : the_rain16

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cette DLL que je vous propose, vous permet de connaitre votre IP public que vous soyez connecter directement ou dans un lan via une passrelle,
Pour l'instant j'ai un petit probleme (erreur de pointeur) mais la dll marche parfaitement.
la dll est fournie avec un example ecrit en Delphi 7.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   DLL_IP
    • Get_Public_ip.dllTélécharger ce fichier [Réservé aux membres club]431 616 octets
    • Project1.cfgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 342 octets
    • Project1.dofTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 156 octets
    • Project1.dprTélécharger ce fichier [Réservé aux membres club]Voir ce fichier188 octets
    • Project1.resTélécharger ce fichier [Réservé aux membres club]876 octets
    • Unit1.~dfmTélécharger ce fichier [Réservé aux membres club]608 octets
    • Unit1.~pasTélécharger ce fichier [Réservé aux membres club]563 octets
    • Unit1.dcuTélécharger ce fichier [Réservé aux membres club]3 966 octets
    • Unit1.dfmTélécharger ce fichier [Réservé aux membres club]728 octets
    • Unit1.pasTélécharger ce fichier [Réservé aux membres club]Voir ce fichier591 octets

Télécharger le zip


 Sources de la même categorie

Source avec Zip BASE64/BASE64URL ENCODE/DECODE par f0xi
Source avec Zip AFFICHAGE DES INFODFS par fbalien
Source avec Zip Source avec une capture INTRA MESSENGER - DELPHI par keket
Source avec Zip CODAGE DÉCODAGE PDU 7BITS par AccessToYou
Source avec Zip Source avec une capture SIMPLEWEBBROWSER par cantador

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture IP-MASTER, OU VOTRE IP FACILE ! par Bacterius
Source avec Zip DÉTECTION DE L'IP INTERNET ET LOCAL par Alphus
Source avec Zip IP INTERNET AVEC UN MODEM/ROUTEUR (INDY & SNMP) par ACHPI32
Source avec Zip Source avec une capture ADRESSE IP DERRIÈRE ROUTEUR - ENVOIE FTP AVEC WININET DU FIC... par OlivierH67
Source avec Zip Source avec une capture IP INTERNET VIA UNE CONNEXION RÉSEAU - RÉCUPÉRER UNE IP DANS... par japee

Commentaires et avis

Commentaire de f0xi le 09/07/2007 11:39:39 administrateur CS



salut

alors, pourquoi ne pas mettre le code de la dll ? la ce n'est pas interessant du tout !

ensuite, on est en delphi pas en c++, alors les identifiant x_machin_y on evite :

GetMyWanIp par exemple decrirais bien le nom de ta fonction.

ensuite, le probleme de pointeur viens surtout du fait que tu utilise le type string!

il faut utiliser le type PChar ou ShortString de cette façon :

const
  MaxIpLength = 15;

function GetMyWanIp(var MyIp : PChar) : integer;

a utiliser comme suit :

var MyIp : string;
    TtSz : integer;
begin
  SetLength(MyIp, MaxIpLength);
  TtSz := GetMyWanIp(PChar(MyIp));
  SetLength(MyIp, TtSz);
  caption := 'votre IP Wan est : '+MyIp;
end;


sinon une autre methode qui consiste a stocker l'ip dans un entier 32bit (cardinal ou tableau de byte) :

type
  pIPv4 = ^TIPv4;
  TIPv4 = record
    case integer of
      0 : (Long : LongWord);
      1 : (Bytes: array[0..3] of byte);
  end;

procedure GetMyWanIP(var IP : LongWord);

a utiliser comme suit :

var
  MyIP : TIPv4;
begin
  GetMyWanIP(MyIP.Long);
  caption := 'Votre IP Wan est : '+format('%d.%d.%d.%d',[MyIP.Bytes[0],MyIP.Bytes[1],MyIP.Bytes[2],MyIP.Bytes[3],]);
end;

qui sera d'ailleur plus facile que l'utilisation de PChar...

voila, bonne prog et oublis pas la source de la DLL.

Commentaire de the_rain16 le 09/07/2007 15:52:35

Salut f0xi et merci pour ton commentaire.
oui c'est exacte j'utilise dans ma dll un type string, moi je croyai que c'etait un bug de traitement!!! :(
mais bon, je vai revoir mon code.
pour la source de la dll, je ne cache pas, c'est juste un petit truc de magie   :)
il y'a un site web qui te retourne ton ip wan (www.whatismyip.com) avec un petit script java qui charge l'ip dans le presse papier.
alors j'utilise le composant indy IDhttp pour charger la page du site et je simule le click pour activer le script java, et en retour j'ai l'ip en presse papier.
Voila l'astuce.


et voici le code source


library get_public_ip;

uses
Variants,
  windows,
  comobj,
  IdHTTP,
  Clipbrd;
{$R *.res}

var
IEApp: OLEVariant;
i:integer;
function getip:string; stdcall;

begin
i:=0;

if(VarIsEmpty(IEApp))then
  begin
   IEApp := CreateOleObject('InternetExplorer.Application');
   ieapp.top:=8000;
   ieapp.visible:=true;
   IEApp.Navigate('http://www.whatismyip.com/');
   ieapp.visible:=false;

     {
   ieapp.top:=8000;
   ieapp.visible:=true;
   ieapp.visible:=false;

   ces lignes de code sont ici pour eviter que l'anti virus (dans mans cas kaspersky)
   declanche une alerte type autorisation
     }

  end;

while (Cardinal(IEApp.readyState)<> 4) and (i<6)  do
  begin
   sleep(1000);
   i:=i+1;
  end;

if i<=6 then
begin
  IEApp.Document.links.item(0).click;
  getip:=clipboard.AsText
end;

end;


exports
getip;

begin
end.



vos commentaires sont les bienvenue.

et merci encore une fois f0xi :)

Commentaire de japee le 11/07/2007 15:03:21 administrateur CS

Salut,

Intéressante approche du problème.
Difficile néanmoins de se passer de www.whatismyip.com ou autre :p
Petit bug : s'il reste du texte dans le presse-papiers, c'est lui qui sera retourné par la fonction et non pas l'adresse IP. Il faudra donc faire une 2ème requête... :(

Commentaire de japee le 11/07/2007 15:06:01 administrateur CS

"Il faudra donc faire une 2ème requête"

... ou récupérer le contenu du presse-papier, bien entendu !

Commentaire de WhiteHippo le 13/07/2007 14:02:03

J'avais fait cette variante, plus succinte :

uses StrUtils, IdHTTP;

function GetPublicIP: AnsiString;
const
  ADDRESS = 'Current IP Address: ';
var
  i: integer;
  s: AnsiString;
  AnIdHTTP: TIdHTTP;
begin
  Result:='';
  AnIdHTTP := TIdHTTP.Create(Form1);
  try
    s := AnIdHTTP.Get( 'http://checkip.dyndns.org' );
    // Résultat de la forme :
    // <html><head><title>Current IP Check</title></head><body>Current IP Address: 255.255.255.255</body></html>

    // Recherche position début adresse IP
    i := AnsiPos(ADDRESS,s)+Length(ADDRESS);

    // Recherche du < de </body>
    while s[i]<>'<' do
    begin
      Result := Result + s[i];
      inc(i);
    end;

  finally
    FreeAndNil( AnIdHTTP );
  end;
end;

// Exemple d'appel
procedure TForm1.Button1Click(Sender: TObject);
begin
  caption := GetPublicIP;
end;

Cordialement.

Commentaire de the_rain16 le 15/07/2007 18:47:05

Bonjour a tous,
merci pour vos commentaires et merci pour votre source "WhiteHippo "   :)
En realité j'etais sur un projet ou je devais recevoir l'ip de mon serveur par email pour une durée de 36H (car j'ai une ip dyn), alors cette idee m'est venue en tete en tombant sur le site (www.whatismyip.com), j'ai realisé mon projet puis j'ai collé l'astuce sur le site.

pour vous japee:
On peut toujours developper cette idée en tenant compte a ce que l'appalication ne soit pas dependante d'un parametre X.
Et merci.

Commentaire de cincap le 16/07/2007 08:53:59

Bonjour à toutes et à tous,

Jlen100 avait trouvé ceci pour le projet "Video surveillance à 4 caméras.."

4 possibilités de trouver son adresse IP.

*****************************************
procedure TFServer.IdHTTPServer1Execute(AThread: TIdPeerThread);
begin
//
end;

{function TFServer.GetLocalIp: 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;
  ip_machine:string;
begin
{Result:=IdHTTP1.Get('http://filezilla.sourceforge.net/misc/ip.php');
  IPServer.Text:=Result;//'Automatic Ip detection: '+

WSAStartup($101, GInitData);
  ip_machine:='';
  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
      // l'IP est stockée ci-dessous
      ip_machine := StrPas(inet_ntoa(pptr^[I]^));
      IPServer.Text:= ip_machine;
      Inc(I);
  end;
  WSACleanup;
end; }

function TFServer.GetLocalIp: string;
var HTMLSource:string;
  wsaData: TWSAData;
  addr: TSockAddrIn;
  Phe: PHostEnt;
  szHostName: array[0..128] of Char;
  BeginDelimit,EndDelimit:integer;
begin

  if RadioButton1.Checked then
  begin
try
    try
      if WSAStartup($101, WSAData) <> 0 then
        raise Exception.Create('Cannot initialize WSA');
      try
        if GetHostName(szHostName, 128) <> SOCKET_ERROR then
        begin
          Phe := GetHostByName(szHostName);
          if Assigned(Phe) then
          begin
            addr.sin_addr.S_addr := longint(plongint(Phe^.h_addr_list^)^);
            Result := inet_ntoa(addr.sin_addr);
          end;
        end;
      finally
        WSACleanup;
      end;
    except
      on e:Exception do begin
        Result:='Error: '+e.Message;
        raise;
      end else
        raise;
    end;
  finally
    //StaticText1.Caption:='Automatic Ip detection: '+Result;
  end;
  end;

  if RadioButton2.Checked then
  begin
  Try
    HTMLSource:=IdHTTP1.Get('http://checkip.dyndns.org/');
    delete(HTMLSource,1,pos(':',HTMLSource)+1);
    delete(HTMLSource,pos('<',HTMLSource),80);
    result:=HTMLSource;
  Except
//  Result:=false;
  end;
  end;

  if RadioButton3.Checked then
  Try
   result:=IdHTTP1.Get('http://filezilla.sourceforge.net/misc/ip.php');
  Except
//  Result:=false;
  end;
  
  if RadioButton4.Checked then
  begin
  Try
    HTMLSource:= IdHTTP1.Get('http://www.showmyip.com/fr/'); //On demande le contenu de la page et on le récupère dans HTMLSource
    BeginDelimit:=length(Copy(HTMLSource,1, Pos('Internet',HTMLSource)+ 9 ) );//);76 ,77
    EndDelimit:=length(Copy(HTMLSource,Pos('-->',HTMLSource)-1,Length(HTMLSource)));
    Result:=Copy(HTMLSource,BeginDelimit,Length(HTMLSource)-BeginDelimit-EndDelimit+1); //On extrait l'adresse IP de HTMLSource
  Except
//  Result:=false;
  end;
  end;
  IPServer.Text:=Result;//'Automatic Ip detection: '
end;
******************

@+,

Cincap

Commentaire de Francky23012301 le 16/07/2007 17:57:28

Cincap : Dans la source de JLen il y a des méthodes pour l'IP Local (Voir la partie WInsock) et d'autres pour l'IP internet (Qui avit déjà été pondu par d'autres comme Caribensila). Cependant je te rejoins sur une chose : avec JLen on avait mis en place une technique pour détecter l'adresse IP et l'envoyer par mail à un autre poste.

Commentaire de cincap le 16/07/2007 18:08:59

Bonjour Francky23012301,

Bien vu et je savais que tu avais travaillé avec Julen100 sur la partie qui touche aux connections Internet, partie qui n'a plus de secret pour toi.

Ceci dit, il est toujours bon de rappeller qu'il existe des sources ou morceau de source qui rappellent des méthodes méconnues par les débutants dont je fais partie.

@+,

Cincap

Commentaire de EricStrasbourg le 12/08/2007 23:41:34

Bonjour à tous,

Pourquoi ne pas employer très simplement le composant Indy TIdHTTP ?

Auquel cas ces quelques ligne pour récupérer l'IP publique suffisent :

   //__________ Récupérer l'IP publique
   url := 'http://dynupdate.no-ip.com/ip.php';
   HTTP := TIdHTTP.Create(nil);
   Try
      Try
         lIP := Http.Get(url);
      Except
         lIP := '';
      End ;
   Finally
      FreeAndNil(http);
   End;

Cdlt,
Eric

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment récuperrer l'adresse IP de connection internet ? [ par chaced ] voila, en utilisant idipwatch (indy9) mais, ça ne fonctionne pas losque je suis derriere un routeur, donc comment faire pour recuperer l'ip meme derri Adresse IP et Nom de machine sous DELPHI [ par cornelia ] Bonjour,J'ai une base de données PROTEST et je voudrais un petit code ( y compris les composants nécessaires ) sous DELPHI 5 ou DELPHI 7 qui me perm Récupérer l'adresse IP ! [ par LesDelphistes ] Bonjour, Je souhaiterai trouver une solution pour pouvoir récupérer l'adresse IP de ma machine connectée TCP/IP (Internet par exemple) sans utilise adresse IP [ par winocam ] J'aimerais savoir s'il est possible de récupérer l'adresse IP utilisé sur internet par un poste lorsque celui-ci est connecté via router. Merci d'avan Comment obtenir l'adresse IP d'un ordinateur ? [ par Bruto ] Comment obtenir l'adresse IP d'un ordinateur du réseau sachant que nous connaissons son nom ? Bruto --- Le p'tit belge --- pour vous servir Adresse IP [ par TZig ] Lo,J'aimerais savoir comment récupérer les @ IP ainsi que les noms des autres machines connectées?J'aimerais également pouvoir réaffecter ces paramètr Adresse IP sous Delphi [ par msuire ] michelComment récupérer l'adresse IP fournie par le FAI pour la faire passer vers un autre site afin d'établir une connexion ?Un petit executable en d plage IP [ par thierryla ] salutest ce qu il existe une fct qui permette de verifier que l adresse ip du poste est bien dans une plage ip spécifiée ?La fonction que j ai est tou Modification dynamique adresse IP et DNS [ par knacky ] Bonjour, je cherche un moyen de modifier à partir d'un programme réaliser en Delphi l'adresse IP et si possible le DNS et tout cela en dynamique.J'ai Comment obtenir son adresse Ip ? [ par Bruto ] Comment obtenir son adresse Ip ? Bruto --- Le p'tit belge --- pour vous servir


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales