こんばんは。いつもお世話になっています。
早速ですが質問させてください。
タイトルにあるように同一LAN内のIPAdressやMacAdressを取得するには
どのようにすればよいのでしょうか?
この手のプログラミングはまったくしたことが無く途方に暮れています。
もしお解りの方がいらっしゃいましたら、ご教示いただけないでしょうか?
サンプルソースの場所だけでも非常にありがたいので、宜しくお願いします。
設定を正しくして
動作させてください。
function GetHostName(Ip : String) : String;
var
PH : PHostEnt;
InAddr: TInAddr;
WSADATA : TWSADATA;
begin
Result := '';
if Ip = '' then exit;
InAddr.S_addr := inet_addr(PChar(Ip));
WSAStartup(MakeWord(1,1) , WSADATA); //MakeWord(1,1)=$0101
PH := gethostbyaddr(@InAddr,4,PF_INET);
if PH = nil then Exit;
Result := string(ph^.h_name);
WSACleanup;
end;
function GetIpAddress(HostName : String) : String;
var
PH : PHostEnt;
InAddr: TInAddr;
WSADATA : TWSADATA;
begin
Result := '';
if HostName = '' then exit;
WSAStartup(MakeWord(1,1), WSADATA);
PH := gethostbyname(PChar(HostName));
if PH = nil then Exit;
InAddr := PInAddr(ph^.h_addr_list^)^;
Result := inet_ntoa(InAddr);
WSACleanup;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Memo1.Lines.Add( GetHostName('127.0.0.1') );
Memo1.Lines.Add( GetIpAddress(GetHostName('127.0.0.1')) );
Memo1.Lines.Add( GetIpAddress('www.yahoo.co.jp') );
end;
参考
[Delphi-ML:33669] Re: IP アドレス(?) からの変換
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=33669
こける Wired-Winsockを使ってみようぜ-3.住所と氏名 '97/11/23
http://www.asahi-net.or.jp/~nk2w-ishr/winsock3.htm
返信ありがとうございます。
ホストからIPアドレス
IPアドレスからホスト名
ありがたく使わせていただきます。
先ほどまで調べてみると、他にも
Lan内のIPアドレスからMACアドレスへ変換
Lan内のコンピュータ名からプライベートIPアドレスの変換は
なんとか見つけることが出来ました。
しかし、同一LAN内の各コンピューター名(IP, MacAddressでも可)の
取得がわかりませんでした。
キャッシュしているARPテーブルを参照出来れば
目的が果たせそうな気もするのですが、まだソースを見つけるにいたっていません。
考え方を変えて同じWORKGROUPのコンピュータ名の列挙でも
目的が果たせそうな気もするのですが、これもまたやりかたがわからず・・・。
どうぞよろしくお願い致します。
わたしも、192.168.123.0〜255まで
pingを投げて(Indyのコンポーネントでできる)
返事があった物に対してのみ、GetHostNameを行って
検索したりしているのですが
遅くて使い物にならないんですよね...
こける Wiredにのっている、
非同期通信の事はまだ勉強できてないっす。
いい方法がありましたら、知りたいです。
誰か教えてください。
ARPでよかったら
http://users.pandora.be/dirk.claessens2/software.htm
のtcpipmon15.zipでサンプルが取得できます
ARPの場合キャッシュの情報を見ることになるので、必ずしも現在接続しているPCの一覧が取得できるとは限りませんが。
(一定時間アクセスしないとキャッシュから消える)
WorkGroup内のリストは以下で取得できました
http://www.swissdelphicenter.ch/torry/showcode.php?id=2177
PCの環境によっては取得に時間がかかるかも?
ツイート | ![]() |