各位高人:如何获得计算机 IP 地址,不胜感激!!!(100分)

  • 主题发起人 主题发起人 woo
  • 开始时间 开始时间
W

woo

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获得计算机 IP 地址,不胜感激!!!,不会用getcomputername Function?
 
以前有讨论,而且也有控件的
 
function TNetwork.GetLocalIP: 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:='';
GetHostName(Buffer,SizeOf(Buffer));
phe:=GetHostByName(buffer);
if not assigned(phe) then
exit;
pptr:=PaPInAddr(Phe^.h_addr_list);
i:=0;
while pptr^<>nil do begin
result:=StrPas(inet_ntoa(pptr^^));
inc(i);
end;
wsacleanup;
end;
 
function GetLocalIP: string;
//获得本地IP地址
var
p : PHostEnt;
s : array[0..128] of char;
sIP : pchar;
begin
{得到计算机名称}
GetHostName(@s, 128);
p := GetHostByName(@s);
//p^.h_Name-->计算机名
{得到机器IP地址}
sIP := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Result := sIP;
end;

 
使用XK同学的方法,再加上:
uses winsock;
 
要得到其他机器IP,写上
buffer:=HostName
 
这个问题讨论了N+X遍了,我也回答过Y+X次了,先查一下以前的问题,
再提问好吗?
 
给你一段用C++Builder写的源代码,不过在Delphi中也大同!
int __fastcall GetHostIPAddress(
AnsiString *Apas_ComputerName,
AnsiString *Apas_IPAddress
)
{
struct hostent *hos_Host;
struct in_addr in_Host_addr;
char c_ComputerName[80];
char *pc_Ip,*pc_ptr;
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested=MAKEWORD(2,0);
if(!(WSAStartup(wVersionRequested,&amp;wsaData)==0))
return -1;
if(LOBYTE(wsaData.wVersion)!=2||
HIBYTE(wsaData.wVersion)!=0)
{
WSACleanup();
return -1;
}
if(gethostname(c_ComputerName,80)==SOCKET_ERROR)
return -1;
if(!(hos_Host=gethostbyname(c_ComputerName)))
return -1;
memset((void *)&amp;in_Host_addr,sizeof(in_Host_addr),0);
in_Host_addr.s_addr=*((unsigned long *)hos_Host->h_addr_list[0]);
if(!(pc_ptr=inet_ntoa(in_Host_addr)))
return -1;
WSACleanup();
pc_Ip=new char[strlen(pc_ptr)+1];
strcpy(pc_Ip,pc_ptr);
*Apas_ComputerName=AnsiString(hos_Host->h_name);
*Apas_IPAddress=AnsiString(pc_Ip);
return 0;
}
 
如果是NT及98,用命令ipconfig即可
 
这位仁兄的分好多呀,也不先检索一下已答问题
 
IP=Request.ServerVariables.Item("remote_addr")
(IN ASP)
 
多人接受答案了。
 
可以利用dos中的ping命令
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
887
DelphiTeacher的专栏
D
D
回复
0
查看
834
DelphiTeacher的专栏
D
后退
顶部