Ağdaki IP'si verilen bilgisayarın adını bulmak?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Ağdaki IP'si verilen bilgisayarın adını bulmak?

Mesaj gönderen salvation »

Merhaba;
ağda IP'si verilen bir bilgisayarin adını bulmak için hangi bileşeni kullanmalıyız? Indy bileşenlerinin içinde varmı ?
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Mesaj gönderen unalaygun »

sana sunu hatırlatmak isterim command satırında zaten ip'si bilinen pc'ye ping atıldığında karşısında makine ismi çıkıyor ....
Eğer ortamda DNS yada WINS gibi isim ve ip cozumlemesi yapan bileşenler var ise bunların database'indende alabilirsin ama erişimi nasıl gerçekleştirbilirsin bilemiyorum kolay gelsin
derviş
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

CreateProcess ile Dos komutu olarak ping -a ile pingleyip burdan sonucu dosyadan okutabilirsin. Biraz Dolanbaçlı bir yol ama. Diğer türlü bir yol bulana kadar bu şekilde yapabilirsin.
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

evet P206 dediğin gibi yapılabiliyor.Bir süre işimi görür heralde, teşekkürler!
Delhici
Üye
Mesajlar: 176
Kayıt: 20 Eyl 2003 09:04

Mesaj gönderen Delhici »

Aşağıdaki kod işini görecektirr... uses winsock;

Kod: Tümünü seç

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 
  label1.Caption:=IPAddrToName(edit1.text); 
end;
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

Evet Delhici tam olarak aradığımda buydu. Hepinize teşekkürler..
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

Mesaj gönderen muskut »

Uses idstack

olarak ekle

Sonra istediğin yerde

GStack.WSGetHostByAddr(IPAdresin)

olayını kullan.

örneğin;

procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(GStack.WSGetHostByAddr('10.0.0.2'));
end;

vesselam
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

muskut yazdı: procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(GStack.WSGetHostByAddr('10.0.0.2'));
end;
Access Violation veriyor? Sadece bu fonksiyonda değil,WSGetHostByName'dede aynı sorun var.Xp kullanıyorum
Kullanıcı avatarı
muskut
Kıdemli Üye
Mesajlar: 1118
Kayıt: 22 Ara 2003 09:50
Konum: Sandalyemden
İletişim:

Mesaj gönderen muskut »

bende ikspe kullanıyorum hemde homeedişın. Ama güzel çalışıyor. Ağ üzerinde bulunan herhangi bir makinanın ipsini yazıp adını bulabiliyorum ama şey bide bende komponenet olarak TIdIcmpClient var :) ben bunu unuttum söylemeyi :) Bide bunu ekle port numarasını felan ayarla. Ondan sonra çalışıyor
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
  K,S: string;
  i:integer;
begin
  RichEdit1.Lines.Clear;
  if RadioButton3.Checked=True then begin
    S:=Edit2.Text;
    TcpClient1.RemoteHost:=S;
    if RadioButton1.Checked=True then
      K:=TcpClient1.LookupHostName(S)
    else
      K:=TcpClient1.LookupHostAddr(S);
    RichEdit1.Lines.Add(K);
  end
  else begin
    AssignFile(F, Edit1.Text); { File selected in dialog }
    Reset(F);
    while not(eof(F)) do begin
     Readln(F, S);                        { Read first line of file }
     TcpClient1.RemoteHost:=S;
     if RadioButton1.Checked=True then
       K:=TcpClient1.LookupHostName(S)
     else
       K:=TcpClient1.LookupHostAddr(S);
     RichEdit1.Lines.Add(K);
    end;
    CloseFile(F);
  end;
end;
Formuna Bir tane TcpClient Bileşeni ekle...
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

hallettim arkadaşlar çok teşekkür ederim :)
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

salvation yazdı:hallettim arkadaşlar çok teşekkür ederim :)
eğer ne şekilde hallettiğinizide buraya yazarsanız , seviniriz...

Kolay Gelsin...
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

burda yazılan yöntemlerin hepsiyle rahatlıkla yapılabiliyor. Ben "delhici" nin yöntemiyle yaptım.
Delhici yazdı: uses winsock;

Kod: Tümünü seç

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 
  label1.Caption:=IPAddrToName(edit1.text); 
end;
Cevapla