Adresse IP sous Delphi 6 - Delphi/Pascal - Programmation
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.
Marsh Posté le 27-09-2002 à 11:59:37
Poire tu as oublié de donner le .dfm. 
 
  
 
Marsh Posté le 27-09-2002 à 12:02:28
| Olyv a écrit a écrit  : Poire tu as oublié de donner le .dfm.   | 
 
  
  
 
Pour récupéré la liste des ip (rezo + net par exemple) : 
|   | 
 
 
Si derrière routeur C mort  
  
 
  
 
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)
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   
 
Marsh Posté le 27-09-2002 à 12:06:36
pas grilled du tout puisque moi j'explique +/- comment résoudre le problème 
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   | 
 
plutôt - que + d'ailleur   
  
Et puis tu C même pas s'il a un routeur   
 
Marsh Posté le 27-09-2002 à 12:32:07
ma phrase commençait par "si" 
et vu qu'il parle d'adresse "locale"... 
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é
Marsh Posté le 27-09-2002 à 14:17:19
Je trouve où les composants nécessaires pour ces déclarations ? 
 WSAData: TWSAData; 
 HostEnt: PHostEnt; 
 
Marsh Posté le 27-09-2002 à 14:20:28
uses winsock, cf premier post de Poire
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
Marsh Posté le 27-09-2002 à 14:55:22
2 rien
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
Marsh Posté le 01-10-2002 à 21:02:26
  
 
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 !!!!
Marsh Posté le 01-10-2002 à 23:39:50
rab  
 
 
  
 
Marsh Posté le 02-10-2002 à 01:02:47
| Je@nb a écrit a écrit  : sve dire koi rab ? | 
 
Je te laisse chercher 
Marsh Posté le 03-10-2002 à 00:57:16
| Je@nb a écrit a écrit  :  g pas que ça à faire     | 
 
oh qu'il est méchant   
  
 
ça veut dire rien à battre   
  
 
 
  
 
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à ???