Oggi utilizziamo Delphi per creare un software con il quale è possibile conoscere l’indirizzo IP di un computer, tale applicazione può essere utilizzata sia nel caso in cui si è connessi ad internet, sia nel caso in cui la macchina sta lavorando in locale.
Avviamo Delphi, creaiamo una nuova applicazione, visualizziamo la nostra form in modalità codice ed inseriamo la libreria Winsock fra le uses, tale libreria viene utilizzata dai sistemi operativi Microsoft Windows in modo che i protocolli di rete TCP/IP vengano utilizzati in maniera semplificata.
A questo punto creiamo una funzione per ottenere l’indirizzo IP della macchina, quindi inseriamo nella sezione implementation quanto segue:
function OttieniIP(var Host, IPAddr, WSAErr: string): boolean;
type
Nome=array[0..100] of Char;
PNome=^Nome;
var
HEnt: pHostEnt;
HNome: PNome;
WSAData: TWSAData;
i: integer;
begin
result:=false;
if WSAStartUp($0101, WSAData) <> 0 then
begin
WSAErr:='Il winsock non risponde';
exit;
end;
IPAddr:='';
New(HNome);
if GetHostName(HNome^, SizeOf(Nome))=0 then
begin
Host:=StrPas(HNome^);
HEnt:=GetHostByName(HNome^);
for i:=0 to HEnt^.h_length-1 do
IPAddr:=Concat(IPAddr, IntToStr(Ord(HEnt^.h_addr_list^[i]))+'.');
SetLength(IPAddr, Length(IPAddr)-1);
result:=true;
end;
else
begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:='WSANotInitialised';
WSAENETDOWN:WSAErr:='WSAENetDown';
WSAEINPROGRESS:WSAErr:='WSAEInProgress';
end;
end;
Dispose(HNome);
WSACleanup;
end;
Implementata la funzione che ci permetterà di ottenere l’indirizzo IP non ci resta che inserire i componenti per visualizzare i dati, quindi visualizziamo la form in modalità design ed inseriamo due etichette di testo (label), due caselle di testo (edit), un pulsante (button) e rinominiamoli come meglio crediamo.
Io procederò come segue:
- Label1
name: lblNome,
caption: Nome; - Label2
name: lblIP,
caption: Indirizzo IP; - Edit1
name: edtNome,
text: eliminare il testo presente; - Edit2
name: edtIP,
text: eliminare il testo presente; - Button1
name: btnIP,
caption: Indirizzo IP.
A questo punto facciamo doppio click sul nostro pulsante btnIP oppure selezioniamo il pulsante ed andiamo fra gli eventi delle proprietà del nostro btnIP, facciamo doppio click sull’evento OnClick ed inseriamo il seguente codice:
procedure TForm1.btnIPClick(Sender:TObject);
var
Host, IP, Err: string;
begin
if OttieniIP(Host, IP, Err) then
begin
edtNome.Text:=Host;
edtIP.Text:=IP;
end
else
MessageDlg(Err, mtCustom, [mbOk], 0);
end;
Compiliamo l’applicazione e clicchiamo sul pulsante Indirizzo IP, otterremo il nome dell’host ed il relativo indirizzo IP.
