在网上找了一些,都不好用,或者干脆是错的,有没有好用的,大家帮帮忙,给点好用的代码

解决方案 »

  1.   

    有个gethostbyaddr函数好像可以做到,返回一个结构体能获的计算机名
    用法记不太清了,你查一下MSDN
      

  2.   

    {=================================================================
      功  能: 返回本机的局域网Ip地址
      参  数: 无
      返回值: 成功:  True, 并填充LocalIp   失败:  False
      备 注:
      版 本:
         1.0  2002/10/02 21:05:00
    =================================================================}
    function GetLocalIP(var LocalIp: string): Boolean;
    var
        HostEnt: PHostEnt;
        Ip: string;
        addr: pchar;
        Buffer: array [0..63] of char;
        GInitData: TWSADATA;
    begin
      Result := False;
      try
        WSAStartup(2, GInitData);
        GetHostName(Buffer, SizeOf(Buffer));
        HostEnt := GetHostByName(buffer);
        if HostEnt = nil then Exit;
        addr := HostEnt^.h_addr_list^;
        ip := Format('%d.%d.%d.%d', [byte(addr [0]),
              byte (addr [1]), byte (addr [2]), byte (addr [3])]);
        LocalIp := Ip;
        Result := True;
      finally
        WSACleanup;
      end;
    end;如果得到别的机器的只需要
    function GetLocalIP(var LocalIp: string): Boolean;
    var
        HostEnt: PHostEnt;
        Ip: string;
        addr: pchar;
        Buffer: array [0..63] of char;
        GInitData: TWSADATA;
    begin
      Result := False;
      try
        WSAStartup(2, GInitData);
        HostEnt := GetHostByName('machinename');
        if HostEnt = nil then Exit;
        addr := HostEnt^.h_addr_list^;
        ip := Format('%d.%d.%d.%d', [byte(addr [0]),
              byte (addr [1]), byte (addr [2]), byte (addr [3])]);
        LocalIp := Ip;
        Result := True;
      finally
        WSACleanup;
      end;
    end;
    就行了
      

  3.   

    api 是不是应用编程接口啊???