procedure GetIPList(IPList: TStringList); 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); GetHostName(Buffer, SizeOf(Buffer)); PHE := GetHostByName(Buffer); if not Assigned(PHE) then Exit; PPtr := PaPInAddr(PHE^.h_addr_list); I := 0; while pptr^[I] <> nil do begin IPList.Add(StrPas(inet_ntoa(PPtr^[I]^))); Inc(I); end; WSACleanup; end;
procedure GetIPList(IPList: TStringList); 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); GetHostName(Buffer, SizeOf(Buffer)); PHE := GetHostByName(Buffer); if not Assigned(PHE) then Exit; PPtr := PaPInAddr(PHE^.h_addr_list); I := 0; while pptr^[I] <> nil do begin IPList.Add(StrPas(inet_ntoa(PPtr^[I]^))); Inc(I); end; WSACleanup; end;
to: jackie168 谢谢 虽然这是个解决办法,但是好象不是很实用 比如我现在在本地写个小程序用这个办法,好象不太合适 再等等,如果没有好的解决办法,就结帖,请关注. :)
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);
GetHostName(Buffer, SizeOf(Buffer));
PHE := GetHostByName(Buffer);
if not Assigned(PHE) then Exit;
PPtr := PaPInAddr(PHE^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
IPList.Add(StrPas(inet_ntoa(PPtr^[I]^)));
Inc(I);
end;
WSACleanup;
end;
如果是在局域网里面, 如何获得服务器的isp分配的ip 呢?
"如果在局域网里面,ISP自然不会给你分配IP。可以通过主动连接外网计算机,由它返回你的网关IP。"
这个了解, 就是比较麻烦,不知道怎么实现.如:怎么返回ISP分配给局域网服务器的ip
请指教 谢谢(解决后加帖给100分)
这个ASP程序如下:
<html>
<%
sip=Request.ServerVariables("LOCAL_ADDR")
cip=Request.ServerVariables("REMOTE_ADDR")
%>
<body>
IP=<%=cip%>
</body>
</html>调用:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=IdHTTP1.Get('http://www.eastrise.cn/ip.asp');
end;
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);
GetHostName(Buffer, SizeOf(Buffer));
PHE := GetHostByName(Buffer);
if not Assigned(PHE) then Exit;
PPtr := PaPInAddr(PHE^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
IPList.Add(StrPas(inet_ntoa(PPtr^[I]^)));
Inc(I);
end;
WSACleanup;
end;
虽然这是个解决办法,但是好象不是很实用 比如我现在在本地写个小程序用这个办法,好象不太合适
再等等,如果没有好的解决办法,就结帖,请关注. :)
已经发帖答谢了,请接受
http://community.csdn.net/Expert/topic/4235/4235222.xml?temp=.8342707
虽然这是个解决办法,但是好象不是很实用 比如我现在在本地写个小程序用这个办法,好象不太合适
再等等,如果没有好的解决办法,就结帖,请关注. :)说到结帖
是怎么回事啊?
我刚来csdn。发帖从来不结
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;