Qualche piccola premessa:
Nella sezione delle USES va richiamata la libreria "Winsock".
Il tipo di dato restituito dalla funzione (denominato "indirizzo") è un record contenente 2 stringhe, così dichiarato:
indirizzo = Record
ipnumber: string;
hostname: string;
end;
Per quanto riguarda la funzione c'è da notare la chiamata WSAStartup che inizializza la DLL Winsock per dialogare col nostro programma. Il comando format viene utilizzato per genera una stringa in formato IPv4 (X.X.X.X)
Function GetIP:indirizzo;
var
WSAData: TWSAData;
HostName: string;
IP: indirizzo;
HostEnt: PHostEnt;
begin
try
WSAStartup(2,WSAData);
SetLength(HostName,255);
GetHostName(PChar(HostName),255);
SetLength(HostName,StrLen(PChar(HostName)));
HostEnt:=GetHostByName(PChar(HostName));
ip.hostname:=hostent^.h_name;
with HostEnt^ do
IP.ipnumber:=Format('%d.%d.%d.%d',
[Byte(h_addr^[0]),
Byte(h_addr^[1]),
Byte(h_addr^[2]),
Byte(h_addr^[3])]);
WSACleanup;
except
Ip.hostname:='Errore nella lettura dell'host name';
Ip.ipnumber:='Errore nella lettura dell'indirizzo IP';
end;
Result:=ip;
end;
La funzione restituisce il nome macchina (Hostname) e l'indirizzo IP (ipnumber). In caso di fallimento della funzione, nelle stringhe viene restituito un errore testuale.
Nessun commento:
Posta un commento