当一台机器连上互联网后。会有一个IP地址,(这个IP不是你自已所设的那个),怎么样获得这个IP 地址。(我记得这个IP是你每次开机上网就会分配给你而且每次都不同。)有源程序最好。
解决方案 »
- 好难写的oracle sql语句,求助高手!!!
- D版的同胞们,吐血大放血能不能放一点血:(
- come(a: array of const),变量a:array of integer,怎样填到come里面?
- 急、急、急:TTreeView的节点中能不能邦定多个属性?
- 程序中如何进行安全的跨边界调用?
- MIS开发人员的好帮手,强大的SQL导出工具,欢迎大家去下载,http://www.playicq.com/dispdocnew.php?id=5260
- delphi里象asp的split的分割函数是什么?急!!!!!!!!!
- 字符串的判断
- 怎麼樣讓程序運行圖標在右下角裡?
- delphi中父类函数如何定义访问子类中的函数
- 关于WebBrowser的使用问题!请踊跃参与!up有分!
- 我的D,E盘莫名其妙的不见了,只看到C盘,重装98,还是找不到?
方法有多种,给你其中一种吧:
uses中加入Nb30, ScktComp, Winsock, shlobj
procedure TForm1.Button3Click(Sender: TObject);
var
wsaData: TWSADATA;
HostName: array[0..79] of char;
p: PHostEnt;
addr: array[0..1] of in_addr;
i: integer;
cc: ppchar;
cc2: pchar;
begin
if WSAStartup(MAKEWORD(1,1), wsaData) <> 0 then
begin
Edit3.Text := 'WinSock版本错误!';
exit;
end;
for i := 0 to 1 do
fillchar(addr[i], Sizeof(In_addr), 0);
if gethostname(HostName, 80) = SOCKET_ERROR then
begin
edit3.Text := '不能取得本地机器名字!';
exit;
end;
p := GetHostByName(HostName);
if not assigned(p) then
begin
edit3.text := '找不到主机!';
exit;
end;
i := 0;
cc := p^.h_addr_list;
CopyMemory(@addr[0], cc, SizeOf(in_addr));
for i := 0 to SizeOf(in_addr) - 1 do
cc2[i] := cc^[i + SizeOf(in_addr)];
CopyMemory(@addr[1], cc2, SizeOf(in_addr));
{ for i := 0 to 1 do
begin
CopyMemory(@addr[i], cc2, SizeOf(in_addr));
cc2 := PChar(
inc(i, 1);
end;}
if string(inet_ntoa(addr[1])) = '0.0.0.0' then
edit3.Text := '计算机没有连接到互联网!'
else
edit3.Text := '互联网络IP地址是:'+string(inet_ntoa(addr[0]));
WSACleanup();
end;
[Error] Unit1.pas(83): Incompatible types: 'WinSock.PChar' and 'System.PChar'
//取得网络适配器物理地址[列表](全球唯一)**************************************
//==============================================================================
procedure GetNetMacIDs(var MacIDs: string);
var Lana_Enum: TLana_Enum;
RetCode: Word;
i: Integer;
begin
Lana_Enum := NetBiosLanaEnum;
{enumerate lanas for WINNT }
if Lana_Enum.Length=0 then Exit;
for i:=0 to Lana_Enum.Length-1 do
begin
{ for every lana found }
RetCode := NetBiosReset(Lana_Enum.Lana[i]);
{ Reset lana for WINNT }
if RetCode<>NRC_GOODRET then Exit;
{ Get MAC Address }
MacIDs := MacIDs + Format('MacID %x = %s;', [Lana_Enum.Lana[i], GetMacAddress(i)]) + #13;
end;
end;//==============================================================================
//取得客户端‘主机名’‘IP地址’************************************************
//==============================================================================
procedure GetClientInfo(var ClientName, IPAddress: string);
var WSAData: TWSAData;
HostEnt: PHostEnt;
begin
{no error checking...}
WSAStartup(2, WSAData);
SetLength(ClientName, 255);
Gethostname(PChar(ClientName), 255);
SetLength(ClientName, StrLen(PChar(ClientName)));
HostEnt := GetHostByName(PChar(ClientName));
with HostEnt^ do IPAddress := Format('%d.%d.%d.%d',[Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
WSACleanup;
end;
TIdIPWatch 在 Indy Misc控件页下