Delphi Can

Orjinalini görmek için tıklayınız: ip adresi alma
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
//bilgisayaradi

paylaşımdaki bir bilgisayarın network üzerindeki İP sini almak mümkünmü?
ping atınca verir herhalde, deneyebilir misin.
Verdiğim Fonksiyon kullanabilirsin

function GetIPAddress(NetworkName: String): String;
var
Error: DWORD;
HostEntry: PHostEnt;
Data: WSAData;
Address: In_Addr;
begin
     Error:=WSAStartup(MakeWord(1, 1), Data);
     if Error = 0 then 
     begin
          HostEntry:=gethostbyname(PansiChar(AnsiString(NetworkName)));
          Error:=GetLastError();
          if Error = 0 then 
          begin
               Address:=PInAddr(HostEntry^.h_addr_list^)^;
               Result:=inet_ntoa(Address);
          end
          else 
          begin
               Result:='Unknown';
          end;
     end
     else
     begin
          Result:='Error';
     end;
     WSACleanup();
end;

7kmop.jpg
(29-10-2018, Saat: 12:51)r3n4m3 Adlı Kullanıcıdan Alıntı: [ -> ]Verdiğim Fonksiyon kullanabilirsin

Kod:
function GetIPAddress(NetworkName: String): String;
var
Error: DWORD;
HostEntry: PHostEnt;
Data: WSAData;
Address: In_Addr;
begin
    Error:=WSAStartup(MakeWord(1, 1), Data);
    if Error = 0 then
    begin
         HostEntry:=gethostbyname(PansiChar(AnsiString(NetworkName)));
         Error:=GetLastError();
         if Error = 0 then
         begin
              Address:=PInAddr(HostEntry^.h_addr_list^)^;
              Result:=inet_ntoa(Address);
         end
         else
         begin
              Result:='Unknown';
         end;
    end
    else
    begin
         Result:='Error';
    end;
    WSACleanup();
end;

7kmop.jpg

teşekkürler deniyecem
Merhaba Ben aşağıdaki gibi kullanmıştım.

uses Winsock;

{$R *.dfm}

function HostnameToIP(Hostname: string): string;
var
 WSAData: TWSAData;
 R: PHostEnt;
 A: TInAddr;
begin
// Varsa Hostname Başındaki '\\' kısmını temizler.
 if (Hostname[1] = '\') and (Hostname[2] = '\') then
 begin
   Hostname[1] := ' ';
   Hostname[2] := ' ';
   Hostname := Trim(Hostname);
 end;
// HostnameGetIP Sorgular.
 WSAStartup($101, WSAData);
 R := Winsock.GetHostByName(PAnsiChar(AnsiString(Hostname)));
 if Assigned® then
 begin
   A := PInAddr(R^.h_Addr_List^)^;
   Result := Winsock.inet_ntoa(A);
 end
 else // Hata Varsa Alınamadı Der.
   Result := 'Alınamadı.'
end;

//Kullanımı
procedure TForm1.Button1Click(Sender: TObject);
begin
 IPAddr.Text := HostnameToIP(Hostname.Text);
end;

Örnek Ekran görüntüsü aşağıdaki gibidir.

Hostname Kısmı  : \\Hostname veya Hostname olabilir. her iki türlüde çözer. Windows API olduğu için diğer platformlarda çalışmaz.

[attachment=292]