快被你烦死了:( 下面几个API函数,我都是从msdn6里查出来的。 WSAStartup; gethostbyname, gethostbyaddr, inet_addr, WSAGetLastError WSACleanup;Function MyGetHostByIP(MIP:string; var Name:string):boolean; var PHt:PHostEnt; WSData: TWSAData; i:Word; j:integer; k:u_long; begin result:=false; i:=MAKEWORD(1,1); if WSAStartup(i,WSData)<>0 then exit; k:=inet_addr(PChar(MIP)); PHt:=gethostbyaddr(@k,4,PF_INET); if PHt=nil then begin j:=WSAGetLastError; Name:='Error:'+inttostr(j-WSABASEERR); end else begin Name:=PHt.h_name; result:=true; end; WSACleanup; end; Function MyGetHostByName(var IP:string; Name:string):boolean; var PHt:PHostEnt; WSData: TWSAData; i:Word; a,b,c,d:byte; j:integer; begin result:=false; i:=MAKEWORD(1,1); if WSAStartup(i,WSData)<>0 then exit; PHt:=gethostbyname(PChar(Name)); if PHt=nil then begin j:=WSAGetLastError; //ip:='Error:'+inttostr(j-WSABASEERR); ip:='********'; end else begin a:=integer(pht.h_addr_list^[0]); b:=integer(pht.h_addr_list^[1]); c:=integer(pht.h_addr_list^[2]); d:=integer(pht.h_addr_list^[3]); ip:=inttostr(a)+'.'+inttostr(b)+'.'+inttostr(c)+'.'+inttostr(d); result:=true; end; WSACleanup; end;
不过要检测哪些IP没用,也不是没有办法,在WIN2000下,利用原始套接字,具体编程你可以查阅相关资料
另外(回楼上),自动获取ip可以指定网关、DNS服务器等
你应该好好学习Windows2000的DHCP,指定网关是它的基本功能,你居然说不能
能不能说一下你用的是哪几个API?
下面几个API函数,我都是从msdn6里查出来的。
WSAStartup;
gethostbyname,
gethostbyaddr,
inet_addr,
WSAGetLastError
WSACleanup;Function MyGetHostByIP(MIP:string; var Name:string):boolean;
var
PHt:PHostEnt;
WSData: TWSAData;
i:Word;
j:integer;
k:u_long;
begin
result:=false;
i:=MAKEWORD(1,1);
if WSAStartup(i,WSData)<>0 then exit;
k:=inet_addr(PChar(MIP));
PHt:=gethostbyaddr(@k,4,PF_INET);
if PHt=nil then begin
j:=WSAGetLastError;
Name:='Error:'+inttostr(j-WSABASEERR);
end else begin
Name:=PHt.h_name;
result:=true;
end;
WSACleanup;
end;
Function MyGetHostByName(var IP:string; Name:string):boolean;
var
PHt:PHostEnt;
WSData: TWSAData;
i:Word;
a,b,c,d:byte;
j:integer;
begin
result:=false;
i:=MAKEWORD(1,1);
if WSAStartup(i,WSData)<>0 then exit;
PHt:=gethostbyname(PChar(Name));
if PHt=nil then
begin
j:=WSAGetLastError;
//ip:='Error:'+inttostr(j-WSABASEERR);
ip:='********';
end else
begin
a:=integer(pht.h_addr_list^[0]);
b:=integer(pht.h_addr_list^[1]);
c:=integer(pht.h_addr_list^[2]);
d:=integer(pht.h_addr_list^[3]);
ip:=inttostr(a)+'.'+inttostr(b)+'.'+inttostr(c)+'.'+inttostr(d);
result:=true;
end;
WSACleanup;
end;