如何自己编程得到本机的公网IP(在线等...)

yw1621 2004-12-26 09:15:18
如题
...全文
207 点赞 收藏 14
写回复
14 条回复
yw1621 2004年12月28日
to: xiaochensu(拒绝水的鱼)
idHttp怎么用啊,没用过
回复 点赞
yw1621 2004年12月28日
局域网没办法吗??
回复 点赞
wooxer 2004年12月27日
这不不简单,你找一个ASP的空间,上面写一个ASP程序,再用INDY的http组件访问这个ASP程序不就有本机的外网IP了!
这个ASP程序如下:
<html>
<%
sip=Request.ServerVariables("LOCAL_ADDR")
cip=Request.ServerVariables("REMOTE_ADDR")
%>
<body>
IP=<%=cip%>
</body>
</html>
回复 点赞
getit911 2004年12月26日
uses IdStack;

procedure getcomputerip(outdata:Tstrings);
var
AIdStack:TIdStack;
begin
AIdStack:=TIdStack.CreateStack;
try
outdata.Text:=AIdStack.LocalAddresses.Text;//获取本地IP地址列表
finally
AIdStack.free;
end;
end;
回复 点赞
headbutcher 2004年12月26日
就用普通的得到静态IP的方法应该可以.
取出来的其实是个IP地址列表.
其中就包含了公网的IP(如果有的话)
回复 点赞
yw1621 2004年12月26日
同志们都在睡吗???
回复 点赞
ehom 2004年12月26日
用ADSL路由上网,本机没有公网IP,其IP只是由ADSL中的DHCP服务动态分配的局域网IP
回复 点赞
ehom 2004年12月26日
将IP列表中的保留地址192.168.x.x/172.16.x.x/10.x.x.x全排除了,剩下的即是...
回复 点赞
getit911 2004年12月26日
如果你是在局域网内,抱歉。。。。。。。。。。。没有办法!!!!!!!
除非连接一个internet上的服务器,由它返回你的ip
回复 点赞
yw1621 2004年12月26日
To: cdkogh(xp++)
可是还是得不到啊!!
我是局域网,ADSL,路由
回复 点赞
yw1621 2004年12月26日
try
回复 点赞
cdkogh 2004年12月26日
uses winsock;

function 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 phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while (pptr^[I] <> nil)and(pptr^[I] = A类地址) do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
回复 点赞
flyinwuhan 2004年12月26日
如果你是在局域网内,抱歉。。。。。。。。。。。没有办法!!!!!!!
除非连接一个internet上的服务器,由它返回你的ip
回复 点赞
tfxg 2004年12月26日
getit911(Windows转Linux中)
得不到公网IP
回复 点赞
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

924

社区成员

3.3w+

社区内容

Delphi 网络通信/分布式开发
社区公告
暂无公告