Adresse IP sous Delphi 6

Adresse IP sous Delphi 6 - Delphi/Pascal - Programmation

Marsh Posté le 27-09-2002 à 11:41:31    

Je cherche à obtenir l'adresse IP Internet de ma machine.
 
Actuellement, je ne parviens à récupérer que l'adresse IP locale.
 
Le but est de m'envoyer un mail à chaque fois que mon adresse ADSL est modifiée.
 
... à moins qu'un petit soft existe déjà ???

Reply

Marsh Posté le 27-09-2002 à 11:41:31   

Reply

Marsh Posté le 27-09-2002 à 11:56:45    

unit IP1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, winsock, Trayicon, Menus;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    TrayIcon1: TTrayIcon;
    PopupMenu1: TPopupMenu;
    Quitter1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure TrayIcon1DblClick(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Cacher(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
  procedure GetHostInfo(var Name, Address: string);
 
implementation
 
{$R *.DFM}
 
procedure GetHostInfo(var Name, Address: string);
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
begin
  { no error checking...}
  WSAStartup(2, WSAData);
  SetLength(Name, 255);
  Gethostname(PChar(Name), 255);
  SetLength(Name, StrLen(PChar(Name)));
  HostEnt := gethostbyname(PChar(Name));
  with HostEnt^  do
    Address := Format('%d.%d.%d.%d',[
      Byte(h_addr^[0]),  
      Byte(h_addr^[1]),
      Byte(h_addr^[2]),  
      Byte(h_addr^[3])]);
  WSACleanup;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  S, n : String;
begin
  GetHostInfo(n, S);
  Label2.Caption := S;
  Label4.Caption := n;
end;
 
procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
  Visible := True;
end;
 
procedure TForm1.Quitter1Click(Sender: TObject);
begin
  Close;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
  S, n : String;
begin
  Application.OnMinimize := Cacher;
  GetHostInfo(n, S);
  Label2.Caption := S;
  Label4.Caption := n;
  TrayIcon1.Active := True;
  TrayIcon1.ToolTip := 'Host : ' + n + chr(13) + 'IP : ' + S;
end;
 
procedure TForm1.Cacher(Sender: TObject);
begin
  Visible := False;
end;
 
end.


---------------
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 27-09-2002 à 11:59:37    

Poire tu as oublié de donner le .dfm.
 
 :pt1cable:


---------------
La mort... c'est un peu comme la connerie. Le mort, lui, il ne sait pas qu'il est mort... ce sont les autres qui sont tristes. Le con, c'est pareil... (Le Chat)
Reply

Marsh Posté le 27-09-2002 à 12:02:28    

Olyv a écrit a écrit :

Poire tu as oublié de donner le .dfm.
 
 :pt1cable:  




 :kaola:  
 
Pour récupéré la liste des ip (rezo + net par exemple) :


procedure GetIPList(ToList : TStrings);
type
  TaPInAddr = array [0..255] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  pptr: PaPInAddr;
  I: Integer;
  HostEnt: PHostEnt;
  Name: String;
  WSAData: TWSAData;
begin
  WSAStartup(2, WSAData);
  SetLength(Name, 255);
  Gethostname(PChar(Name), 255);
  SetLength(Name, StrLen(PChar(Name)));
  HostEnt := gethostbyname(PChar(Name));
  if HostEnt <> nil then
  begin
    pptr := PaPInAddr(HostEnt^.h_addr_list);
    I := 0;
    while pptr^[I] <> nil do begin
      ToList.Add(StrPas(inet_ntoa(pptr^[I]^)));
      Inc(I);
    end;
  end;
  WSACleanup;
end;


 
Si derrière routeur C mort :(  
 
 :hello:


---------------
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 27-09-2002 à 12:02:35    

vaudoo a écrit a écrit :

 
Actuellement, je ne parviens à récupérer que l'adresse IP locale.




 
si t'es derrière un routeur y a pas moyen d'avoir l'adresse publique, à moins d'interroger le routeur ou d'interroger un serveur web qui te reverrait ton adresse (une bête page php sur ton site par ex)


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

Marsh Posté le 27-09-2002 à 12:04:07    

antp a écrit a écrit :

 
 
si t'es derrière un routeur y a pas moyen d'avoir l'adresse publique, à moins d'interroger le routeur ou d'interroger un serveur web qui te reverrait ton adresse (une bête page php sur ton site par ex)




Grilled  :kaola:


---------------
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 27-09-2002 à 12:06:36    

pas grilled du tout puisque moi j'explique +/- comment résoudre le problème :fuck:


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

Marsh Posté le 27-09-2002 à 12:09:47    

antp a écrit a écrit :

pas grilled du tout puisque moi j'explique +/- comment résoudre le problème :fuck:




plutôt - que + d'ailleur  :p  
Et puis tu C même pas s'il a un routeur  :na:


---------------
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 27-09-2002 à 12:32:07    

ma phrase commençait par "si"
et vu qu'il parle d'adresse "locale"...


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

Marsh Posté le 27-09-2002 à 12:42:26    

antp a écrit a écrit :

ma phrase commençait par "si"
et vu qu'il parle d'adresse "locale"...  




Beh s'il partage sa com il a 2 adresses ip celle du rezo et celle du net
et il peut récup les 2 grace au code que G filé


---------------
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 27-09-2002 à 12:42:26   

Reply

Marsh Posté le 27-09-2002 à 14:17:19    

Je trouve où les composants nécessaires pour ces déclarations ?
 WSAData: TWSAData;
 HostEnt: PHostEnt;
 

Reply

Marsh Posté le 27-09-2002 à 14:20:28    

uses winsock, cf premier post de Poire


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

Marsh Posté le 27-09-2002 à 14:41:01    

Désolé... j'avais pas tout pris car je cherchais à comprendre le fonctionnement.
 
Ca marche...  
 
Merci

Reply

Marsh Posté le 27-09-2002 à 14:55:22    

2 rien


---------------
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 01-10-2002 à 17:50:33    

D'après la doc msdn :  
 
How does my existing Windows Sockets for IPv4 code need to be modified to support IPv6?The Microsoft IPv6 Technology Preview for Windows 2000 includes a tool called Checkv4.exe. Checkv4.exe scans source code files to identify code that needs to be changed to support IPv6. Checkv4 displays the line number and a message recommending how the code should be changed. Here is an example of Checkv4.exe output:  
 
test.c(35) : gethostbyname : use getaddrinfo instead
test.c(40) : gethostbyaddr : use getnameinfo instead
test.c(48) : SOCKADDR_IN : use SOCKADDR_STORAGE instead, or use SOCKADDR_IN6 in addition for IPv6 support
test.c(57) : AF_INET : use AF_INET6 in addition for IPv6 support
test.c(89) : inet_addr : use WSAStringToAddress or getaddrinfo with AI_NUMERICHOST instead
 
Checkv4.exe is found in the \bin folder in the location where the IPv6 Technology Preview files were extracted. Checkv4.exe is not copied to the %systemroot%\system32 directory.
 
 
Donc utilise de pref getnameinfo si tu veux que ton apps soit un minimum comptatible v6, mais il i peutetre d'autres erreurs

Reply

Marsh Posté le 01-10-2002 à 21:02:26    

:pt1cable:


---------------
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 01-10-2002 à 21:07:19    

Non non, fo mettre ses applis dans la prospérités !!!!!
Pensez à nous, béta testeurs de l'ipv6, si on peut rien utilisé ça ne se démocratisera jamais !!!!

Reply

Marsh Posté le 01-10-2002 à 23:39:50    

rab :D
 
 :hello:


Message édité par [SDF]Poire le 01-10-2002 à 23:40:01

---------------
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 01-10-2002 à 23:43:27    

sve dire koi rab ?

Reply

Marsh Posté le 02-10-2002 à 01:02:47    

Je@nb a écrit a écrit :

sve dire koi rab ?




Je te laisse chercher :D


---------------
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 02-10-2002 à 19:25:41    

:fuck: g pas que ça à faire :D  :fuck:

Reply

Marsh Posté le 03-10-2002 à 00:57:16    

Je@nb a écrit a écrit :

 :fuck: g pas que ça à faire :D  :fuck:  




oh qu'il est méchant  :kaola:  
 
ça veut dire rien à battre  :fuck:  
 
 
 :hello:


Message édité par [SDF]Poire le 03-10-2002 à 00:57:32

---------------
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 03-10-2002 à 12:48:26    

merci  :jap:   :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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