没有研究,顺路而过,贴一个原来的贴子
问题的标题是:各位高人:如何获得计算机 IP 地址,不胜感激!!!(100分)
问题的分类是:局域网 / 通讯 , 分坛主: netwind, 分坛主: cAkk
来自:woo 时间:01-2-16 20:08:36 ID:456067
如何获得计算机 IP 地址,不胜感激!!!,不会用getcomputername Function?
--------------------------------------------------------------------------------
来自:delphisnail 时间:01-2-16 20:22:24 ID:456070
以前有讨论,而且也有控件的
--------------------------------------------------------------------------------
来自:Jams 时间:01-2-16 22:15:37 ID:456124
>>
--------------------------------------------------------------------------------
来自:xk 时间:01-2-16 22:30:55 ID:456133
function TNetwork.GetLocalIP: string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe
HostEnt;
pptr
aPInAddr;
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;
--------------------------------------------------------------------------------
来自:wind2000 时间:01-2-16 23:54:32 ID:456173
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;
--------------------------------------------------------------------------------
来自:caowei 时间:01-2-17 10:30:45 ID:456364
使用XK同学的方法,再加上:
uses winsock;
--------------------------------------------------------------------------------
来自:djdsz 时间:01-2-17 10:35:26 ID:456372
要得到其他机器IP,写上
buffer:=HostName
--------------------------------------------------------------------------------
来自:weicong 时间:01-2-18 1:14:18 ID:456833
这个问题讨论了N+X遍了,我也回答过Y+X次了,先查一下以前的问题,
再提问好吗?
--------------------------------------------------------------------------------
来自:zhou_bo_nj 时间:01-2-18 2:46:46 ID:456882
给你一段用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,&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 *)&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;
}