Wuja Oskar
Użytkownik
- Dołączył
- Maj 11, 2003
- Posty
- 30
Czym sie rożni Host od IP>I jesli mam kogos IP to jak zdobuc jego Host.Wiem ze to jest lamerskie pytanie ale poprostu nie wiem>Prosze o pomoc
NETBIOS discovery ...
Done sending, waiting for responses ...
SNMP discovery ...
Community string : public
Done sending, waiting for responses ...
ICMP sweep ... (PING!)
Done sending, waiting for responses ...
PONG from 62.244.142.20
- Time to live (TTL) = 50 (64)
+ 14 hop(s) away
- ICMP code in response <> 0 => Unix box
- Timestamp Reply (62.244.142.20)
- ICMP UNREACH for closed port (62.244.142.20)
Ready
1 Computer(s) found.
[62.244.142.20]
Resolving 62.244.142.20...................................................................
.<--- to jest IP hosta
Resolved as : vip.pnet.pl....................................................................<--- to jest nazwa hosta
UDP scanning thread started ...
TCP scanning started ...[/b]
function IPAddrToName(IPAddr : string): string;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then
begin
result:=StrPas(Hostent^.h_name)
end
else
begin
result:='';
end;
end;
Potem wystarczy już tylko dać pod jakiś button ten kodzik:
Host1.text:= IPAddrToName(Edit1.Text);
Host1 to komponent Tedit
Żeby usprawnić nasz prościutki program można dodać kod do Edita, w który wpisujemy adres IP. Pozwoli nam to wpisywać tylko cyfry i kropki..
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', '.']) then
Key := #0;
end;
Dodatkowo można dodać procedurę, która nam poda adres IP na podstawie wpissanego DNSa...
procedure TForm1.HostNaIP(Sender: TObject);
type pu_long = ^u_long;
var WSAData : TWSAData;
HostEnt : PHostEnt;
InAddr : TInAddr;
begin
if WSAStartup($101, WSAData)<>0 then
Label2.Caption := 'Wystąpił ...
else begin
HostEnt:=GetHostByName(JakisEdit.Text);
InAddr.S_addr:=u_long(pu_long(HostEnt^.h_addr_list^)^);
Label2.Caption :=inet_ntoa(InAddr);
end;
WSACleanup;
end;
A oto cały listing prościutkiego programu..
Potrzebne:
2 x TEdit
1 x TButton
2 x TLabel
----------------------
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,winsock;
type
TForm1 = class(TForm)
Edit1: TEdit;
Host1: TMemo;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ $R *.dfm }
function IPAddrToName(IPAddr : string): string;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then
begin
result:=StrPas(Hostent^.h_name)
end
else
begin
result:='';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// pobieranie DNSa
Label1.Caption:= 'Czekaj...Trwa pobieranie danych';
Host1.text:= IPAddrToName(Edit1.Text);
Label1.Caption := 'Pobieranie zakończone';
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', '.']) then Key := #0;
// Kod determinujący wpisywanie tylko cyfr i kropek..
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.Clear;
// jeżeli klikniemy w Edit na adres IP zostanie on wyczyszczony
end;
end.
Originally posted by Wuja Oskar
Czym sie rożni Host od IP>I jesli mam kogos IP to jak zdobuc jego Host.Wiem ze to jest lamerskie pytanie ale poprostu nie wiem>Prosze o pomoc