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à ???