得本机器IP地址(100分)

  • 主题发起人 主题发起人 vividwang
  • 开始时间 开始时间
V

vividwang

Unregistered / Unconfirmed
GUEST, unregistred user!
我用 RASEnumConnectionsA(@RASConns, @dwSize, @dwCount) = 0得IP.
为什么 dwCount总是0.我是在局域网用连Internet,有防火墙请大虾指点一下,
先谢了
 
见下贴有详细解释
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1640829
 
To YFeral,
多谢,用RASEnumConnectionsA好象是标准做法, 因为别的只是能得到本地IP.'192.168....'
 
用Delphi的TUdpSocket控件就可以得到了!
 
用fastNet页的控件基本都可以得到呀,要不用API吧!
 
我发给你一段代码.
function TfrmBillWriteAncestor.LocalIP:string;//获得本机的ip地址
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^ <> nil do BEGIN
result:=StrPas(inet_ntoa(pptr^^));
Inc(I);
END;
WSACleanup;
END;

在interface
uses 加入winsock单元.

 
To nclihai,
这个办法只能得到'192.168....',不是防火墙外的IP.哪位有反弹技术得IP的代码,先谢了.
 
procedure TForm1.Button1Click(Sender: TObject);
var
NetAddress: u_long;
hFile,ret: dword;
msg: string;
preturn: icmp_echo_reply;
begin
NetAddress := inet_addr(pchar(Edit1.text));
hFile:=IcmpCreateFile;
IF hFile = 0 then exit;
msg := 'Hello';
ret:=IcmpSendEcho(hFile,NetAddress,msg,Length(msg),0,preturn,282,200);
IcmpCloseHandle(hfile);
if ret > 0 then
showmessage('ok')
else
showmessage('fail');
end;
 
to arnew,
多谢,可这只能判断是否上网.不能得到IP.
 
一般方法只能得到'192.168....',不是防火墙外的IP.哪位有反弹技术得IP的代码
……
这个问题问得比较好……!!
 
NMSmtp的loaclIp行不行?
 
如果你的系统是WIN98,运行WINIPCONFING[:)]
 
struct hostent *thisHost;
struct in_addr in;
char MyName[80];
char *IP,*ptr;

if(gethostname (MyName,80)==SOCKET_ERROR)
return NULL;
if(!(thisHost = gethostbyname(MyName)))
return NULL;
memset((void *)&in,sizeof(in),0);
in.s_addr=*((unsigned long *)thisHost->h_addr_list[0]);
if(!(ptr = inet_ntoa(in)))
return NULL;
IP = new char[strlen(ptr)+1],
strcpy(IP,ptr);
return IP;





 
很有意思
有一个怪异的办法
有些网站的论坛会显示用户的IP地址,你可以。。。然后就。。。
呵呵和
 
有意思……:PP
 
通过局域网服务器连接到Internet,从外部看,看到的都是服务器网关的地址
网关通过不同的端口来对应局域网内部的机器。
不知道你想要的是什么地址?
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部