网上那个广为流传的贴子好象不能显示出IP啊
解决方案 »
- winsocket中RecvIP数据包重组问题
- 我要在程序中插入一个eidt,能打开和保存word文档,该怎么做?
- 类似QQ这样的放号程序,怎么实现?
- 请问Ehlib中如何才能打印出页码来?
- 使用控件THttpCli遇到的奇怪问题, 错误提示: "connect: WSocketResolveProto: Cannot convert protocol 'tcp', Error #11004".
- 不是问题的大问题
- DWORD = Types.DWORD;这条语句是什么意思?
- 我需要帮助!!!!
- 请问怎么发布这个软件?Delphi+ADO+Access
- 五一长假,支持睡它七天七夜的请回帖!有分送!
- 我的报表预览为什么总是位于其它其它窗口后面?如何让它位于其它窗口的上面?请教。
- ADO和BDE的问题
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;
我再试试通过机器名取得ip
var
WSAData:TWSAData;
HostEnt:PHostEnt;
LastIP:PInAddr;
IPList:^PInAddr;
begin
result:='';
if 0=WSAStartup(MAKEWORD(1,1), WSAData) then
try
begin
HostEnt:=gethostbyname(HostName);
if HostEnt<>nil then
begin
IPList:=Pointer(HostEnt^.h_addr_list);
repeat
LastIP:=IPList^;
INC(IPList);
until IPList^=nil;
if LastIP<>nil then
result:=inet_ntoa(LastIP^);
end;
end;
finally
WSACleanup;
end;end;
function HostToIP(Name: string; var Ip: string): Boolean;
var
wsdata: TWSAData;
hostName: array[0..255] of char;
hostEnt: PHostEnt;
addr: PChar;
begin
WSAStartup($0101, wsdata);
try
gethostname(hostName, sizeof(hostName));
StrPCopy(hostName, Name);
hostEnt := gethostbyname(hostName);
if Assigned(hostEnt) then
if Assigned(hostEnt^.h_addr_list) then
begin
addr := hostEnt^.h_addr_list^;
if Assigned(addr) then
begin
IP := Format('%d.%d.%d.%d', [byte(addr[0]),
byte(addr[1]), byte(addr[2]), byte(addr[3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else
begin
Result := False;
end;
finally
WSACleanup;
end;
end;
-------------------------
DNS := 计算机名字
if HostToIP(DNS, IP) then //获取IP地址
ListComputerIP.Items.Add(DNS + '--->' + IP);