[Delphi] Conoscere l’indirizzo IP di un PC.

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.

Lascia un commento

Occorre aver fatto il login per inviare un commento