CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

知道局域网某机器名,如何得到它的ip,有这样的api吗

楼主hswl(李逍遥)2004-09-02 13:58:16 在 Delphi / 网络通信/分布式开发 提问

如题 问题点数:20、回复次数:4Top

1 楼bxh2dai(希望明天会有些改变)回复于 2004-09-02 14:45:43 得分 5

你看看这段代码可以不~!我可以得到  
  这是我通过Ip返回机器名的代码,你改一下,应该就可以了~!  
  function   GetNameByIPAddr(IPAddr   :   String;var   MacName:String):   Boolean;  
  var  
      SockAddrIn:   TSockAddrIn;  
      HostEnt:   PHostEnt;  
      WSAData:   TWSAData;  
  begin  
      Result   :=   False;  
      if   IpAddr   =   ''   then   exit;  
      try  
          WSAStartup(2,   WSAData);  
          SockAddrIn.sin_addr.s_addr   :=   inet_addr(PChar(IPAddr));  
          HostEnt   :=   gethostbyaddr(@SockAddrIn.sin_addr.S_addr,   4,   AF_INET);  
          if   HostEnt   <>   nil   then  
              MacName   :=   StrPas(Hostent^.h_name);  
          Result   :=   True;  
      finally  
          WSACleanup;  
      end;  
  end;Top

2 楼insert2003(高级打字员)回复于 2004-09-02 15:20:41 得分 10

unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   winsock,   StdCtrls;  
   
  type  
      TForm1   =   class(TForm)  
          Button1:   TButton;  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
          function   GetHostIP(HostName:   String):   String;  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  function   Tform1.GetHostIP(HostName:   String):   String;  
  var  
        buf:pChar;  
        iWsaRet:Integer;  
        Data:WSAData;  
        hostent:PHostEnt;  
  begin  
        Result   :=   '';  
        iWsaRet   :=   WSAStartup($101,Data);  
        if   iWsaRet<>0   then  
        begin  
              ShowMessage('Socket   initialize   error!');  
              Exit;  
        end;  
        buf   :=   Allocmem(60);  
        strcopy(buf,PChar(HostName));  
        if   Trim(buf)=''   then  
              gethostname(buf,60);  
        hostent   :=   gethostbyname(buf);  
        Freemem(buf,60);  
        if   hostent=nil   then  
              Exit;  
        Result     :=   inet_ntoa(pinAddr(hostent^.h_addr^)^);  
        WSACleanup();  
  end;  
   
   
  end.  
   
  如果hostname为空,则取本机的IP  
  要获取远程机器的IP  
  就输入远程机器的名字Top

3 楼ltolll(其实我不是打字员)回复于 2004-09-02 17:04:46 得分 5

function   TForm1.GetIPByName(AName:   String):   string;  
  type  
      TaPInAddr   =   array   [0..10]   of   PInAddr;  
      PaPInAddr   =   ^TaPInAddr;  
  var  
      phe:   PHostEnt;  
      pptr:   PaPInAddr;  
      Buffer:   array   [0..63]   of   char;  
      I:   Integer;  
      GInitData:   TWSADATA;  
  begin  
      WSAStartup($101,   GInitData);  
      Result   :=   '';  
      StrPCopy(Buffer,   AName);  
      phe   :=   GetHostByName(buffer);  
      if   phe   =   nil   then   Exit;  
      pptr   :=   PaPInAddr(Phe^.h_addr_list);  
      I   :=   0;  
      while   pptr^[I]   <>   nil   do  
      begin  
          Result:=StrPas(inet_ntoa(pptr^[I]^));  
          Inc(I);  
      end;  
      WSACleanup;  
  end;Top

4 楼ly_liuyang(Liu Yang LYSoft http://lysoft.7u7.net)回复于 2004-09-02 17:26:25 得分 0

事实上就是DNS/WINS查询:)Top

相关问题

  • 局域网机器IP问题
  • 如何获得局域网中其它机器的IP地址
  • 局域网中如何得到其它机器的IP?
  • 怎样查局域网内IP的机器名
  • 如何快速得到局域网上的机器ip列表?
  • 如何取得局域网内所有机器的IP
  • 求救:局域网通过计算机名无法访问局域网内机器,但是通过IP可以。
  • 已知局域网内某机器的IP,如何得知其机器名?
  • 知道局域网内某台机器的ip,怎么查它的机器名?
  • C#WINFORM如何获取局域网的所有机器的IP和机器名?

关键词

  • ip
  • hostent
  • iwsaret
  • 机器
  • phe
  • papinaddr
  • pptr
  • sockaddrin
  • phostent
  • tform

得分解答快速导航

  • 帖主:hswl
  • bxh2dai
  • insert2003
  • ltolll

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo