Pada artikel yang lalu telah ditulis tentang menampilkan informasi computer name dan user name, kali ini penulis akan membahas tentang bagaimana menampilkan informasi tentang HostName dan IP Address pada Delphi. Jika kita menggunakan network maka PC akan memiliki alamat yang unik berupa alamat IP (Internet Protocol) dimana dengan alamat ini PC dapat berkomunikasi dengan protokol TPC/IP.
Untuk memperoleh kedua informasi ini diperlukan pemrograman socket Windows. Untuk itu tambahkan 'winsock' pada bagian 'uses' pada program Delphi Anda. Pemrograman socket ini selalu dibuka dengan function:
WSAStartup(wVersionRequired:Word;var WSData : WSData):Integer;
Dan ditutup dengan function:
WSACleanup:Integer;
Untuk menampilkan HostName maka diperlukan function:
GetHostName(name:PChar;len:Integer):Integer;
Dengan mengetahui HostName maka dapat dicari alamat IP dengan menggunakan function:
GetHostByName(name:PChar):PHostEnt;
Nilai balik fungsi ini adalah pointer yang menunjukkan ke suatu struktur HostEnt (PHostEnt), yaitu sebuah struktur yang dialokasikan socket Windows yang digunakan function tersebut untuk menyimpan informasi mengenai HostName dan alamat IP.
Contoh Program:
Procedure TForm1.LocalIp;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
HostName: array [0..63] of char; //hostname
i: Integer;
GInitData: TWSADATA;
IpAdd:String; //IP address
begin
// Socket Windows dimulai
WSAStartup($101, GInitData);
IpAdd := '';
// Mengambil Hostname
GetHostName(@HostName, SizeOf(HostName));
// Mengambil IPAddress dari HostName
phe :=GetHostByName(@HostName);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do
begin
IpAdd:=StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
WSACleanup;
// Socket Windows ditutup
label1.Caption :='Host Name : ' + HostName;
label2.caption :='IP Address : ' + IpAdd ;
end;
Kemudian dengan melalui event Button1.Click maka procedure diatas dijalankan.
procedure TForm1.Button1Click(Sender: TObject);
begin
LocalIp;
end;
Jangan lupa untuk mengetikkan nama procedure (Procedure LocalIp;)pada bagian 'Private'.
Untuk memperoleh kedua informasi ini diperlukan pemrograman socket Windows. Untuk itu tambahkan 'winsock' pada bagian 'uses' pada program Delphi Anda. Pemrograman socket ini selalu dibuka dengan function:
WSAStartup(wVersionRequired:Word;var WSData : WSData):Integer;
Dan ditutup dengan function:
WSACleanup:Integer;
Untuk menampilkan HostName maka diperlukan function:
GetHostName(name:PChar;len:Integer):Integer;
Dengan mengetahui HostName maka dapat dicari alamat IP dengan menggunakan function:
GetHostByName(name:PChar):PHostEnt;
Nilai balik fungsi ini adalah pointer yang menunjukkan ke suatu struktur HostEnt (PHostEnt), yaitu sebuah struktur yang dialokasikan socket Windows yang digunakan function tersebut untuk menyimpan informasi mengenai HostName dan alamat IP.
Contoh Program:
Procedure TForm1.LocalIp;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
HostName: array [0..63] of char; //hostname
i: Integer;
GInitData: TWSADATA;
IpAdd:String; //IP address
begin
// Socket Windows dimulai
WSAStartup($101, GInitData);
IpAdd := '';
// Mengambil Hostname
GetHostName(@HostName, SizeOf(HostName));
// Mengambil IPAddress dari HostName
phe :=GetHostByName(@HostName);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do
begin
IpAdd:=StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
WSACleanup;
// Socket Windows ditutup
label1.Caption :='Host Name : ' + HostName;
label2.caption :='IP Address : ' + IpAdd ;
end;
Kemudian dengan melalui event Button1.Click maka procedure diatas dijalankan.
procedure TForm1.Button1Click(Sender: TObject);
begin
LocalIp;
end;
Jangan lupa untuk mengetikkan nama procedure (Procedure LocalIp;)pada bagian 'Private'.
0 komentar:
Posting Komentar