怎么获得本机在互联网网上的真是地址呀!!(7分)

  • 主题发起人 主题发起人 longjiang
  • 开始时间 开始时间
L

longjiang

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么获得本机的真是ip地址呀,不是内网的地址!!
 
如果你用得操作系统是WIN9X,则用命令“winipcfg”
如果你用得操作系统是WINNT或者2000及以后的版本,则用命令“ipconfig”
 
方法一、你可以用ipconfig >path/filename
e.g.:ipconfig >c:/1.txt
然后读取该文件
=============================================
Windows IP Configuration





Ethernet adapter 本地连接:



Connection-specific DNS Suffix . :

Autoconfiguration IP Address. . . : 169.254.178.25

Subnet Mask . . . . . . . . . . . : 255.255.0.0

Default Gateway . . . . . . . . . :



PPP adapter enterinternet:



Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 218.89.19.17

Subnet Mask . . . . . . . . . . . : 255.255.255.255

Default Gateway . . . . . . . . . : 218.89.19.17
=========================================================================
方法二、当然是用delphi
uses Winsock;

function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
Name = array[0..100] of Char;
PName = ^Name;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Integer;
begin
Result := False;
if WSAStartup($0101, WSAData) <> 0 then begin
WSAErr := 'Winsock is not responding."';
Exit;
end;
IPaddr := '';
New(HName);
if GetHostName(HName^, SizeOf(Name)) = 0 then
begin
HostName := StrPas(HName^);
HEnt := GetHostByName(HName^);
for i := 0 to HEnt^.h_length - 1 do
IPaddr :=
Concat(IPaddr,
IntToStr(Ord(HEnt^.h_addr_list^)) + '.');
SetLength(IPaddr, Length(IPaddr) - 1);
Result := True;
end
else begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:='WSANotInitialised';
WSAENETDOWN :WSAErr:='WSAENetDown';
WSAEINPROGRESS :WSAErr:='WSAEInProgress';
end;
end;
Dispose(HName);
WSACleanup;
end;
 
另外你这分是不是寒碜了点呀!?
[:D][:D]
呵呵!
不过不要介意
 
老大我是没有分呀,有分早就给大家了,我都快穷死了!!
 
老大你的办法在我这里不行呀


Windows IP Configuration





Ethernet adapter Local Area Connection:



Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 10.0.44.1

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 10.0.44.1

这是我得到的东西
 
这是用ipconfig -all得到

Windows IP Configuration

Host Name . . . . . . . . . . . . : myname
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek RTL8139 Family PCI Fast Ethe
rnet NIC
Physical Address. . . . . . . . . : 00-0A-EB-18-74-2A
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 10.0.44.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.44.1
DNS Servers . . . . . . . . . . . : 202.99.8.1
 
方法一:是将ipconfig的显示用管道存到文本文件,然后读取文本文件来获取local ip,和其他更详细的信息,你可以读取
IP Address
Subnet Mask
Default Gateway
DNS Servers
等关键字来获取你所要信息
如“IP Address。。。。。。。。。。。10.0.44.3”就是你要的本地ip
==================================================================
方法二:是直接编程获取(如下)
uses Winsock;

function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
Name = array[0..100] of Char;
PName = ^Name;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Integer;
begin
Result := False;
if WSAStartup($0101, WSAData) <> 0 then begin
WSAErr := 'Winsock is not responding."';
Exit;
end;
IPaddr := '';
New(HName);
if GetHostName(HName^, SizeOf(Name)) = 0 then
begin
HostName := StrPas(HName^);
HEnt := GetHostByName(HName^);
for i := 0 to HEnt^.h_length - 1 do
IPaddr :=
Concat(IPaddr,
IntToStr(Ord(HEnt^.h_addr_list^)) + '.');
SetLength(IPaddr, Length(IPaddr) - 1);
Result := True;
end
else begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:='WSANotInitialised';
WSAENETDOWN :WSAErr:='WSAENetDown';
WSAEINPROGRESS :WSAErr:='WSAEInProgress';
end;
end;
Dispose(HName);
WSACleanup;
end;
 
我要的不是这个ip呀我要的不是内网的ip地址,是计算机在互联网上的真正的ip地址呀
 
你所要的应该是不确定的不吧`~~
呵呵
就上面的结果就不错了哦`
学习到了````
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2380553
 
老大们,我现在用的是方正宽带,在外网得到的ip地址都是统一的就是方正宽带的固定ip地址,在内网直接获取得到的是内网的地址,有什么办法得到本机在公网上的真是ip地址呀,不是方正宽带的那个
 
内网机器在公网上是没有固定IP的,如果想直接看见内网机器,必须代理机上端口映射.
 
to topgun2 能否说的详细点呀,最好告诉我怎么做!!谢谢!!
 
估计你用的宽带是作过NAT地址转换了的,你本身没有公网IP,也就是说你在本机上看到的
IP地址一般都是10。X.X.X等地址,但是你访问网站,网站上提示你的IP是X.X.X.X(公网)
那是因为服务商有个交换机将你的的IP包中10.X.X.X:端口号转换成了X.X.X.X:新端口号
转发出去了。而你是不可能在自己的机器上得知服务商会用什么X.X.X.X来替换你的10.X.X.X(但是一般设置了就不常变动)。如果你一定要得到这个地址,最简单得方法就是
访问某个网站,该网站又有网页可以告诉你你的(服务商)IP。比如你有自己的网站,并支持ASP的话,可以自己写一个ASP返回连接者的IP地址。
 
后退
顶部