uses
WinSock,SysUtils;
function TWebMain.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 do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
WinSock,SysUtils;
function TWebMain.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 do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
解决方案 »
- delphi如何不安装‘Microsoft Office Document Imaging’就能调用?
- com连接地磅问题
- 求一个工资管理规则的算法
- 请问如何在edit框中定位光标位置呢?
- 请问delphi7中QuickReport系列控件,在Project项中不能加载是什么原因?
- 小女子弱弱的问:Delphi开发数据库软件中是用什么控件实现数据库服务器和应用服务器的连接,应用服务器又通过什么控件和客户端程序连接的
- $$$$$$$$二进制数据文件导入数据库中$$$$$$$$
- DELphi 的警告是什么意思??
- 各位,谁用过Ghostinstall ,如何坐中文安装程序啊,
- 关于qreport地多页打印。
- SQL語句問題!!!
- delphi 7 .Net 使用大讨论!
var Ip,IpStr:string; ch:array[1..32]of char; i:integer;
WSData:TWSAData; MyHost:PHostEnt;
begin
if WSAstartup(2,WSData)<>0 then
begin
ShowMessage('没有成功返回!');
Halt(2);
end;
try
if getHostName(@ch[1],32)<>0 then
begin
ShowMessage('没有成功返回!');
Halt(3);
end;
except
ShowMessage('没有成功返回!');
Halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
if MyHost=NIL then
begin
ShowMessage('没有成功返回!');
Halt(4);
end
else
begin
for i:=1 to 4 do
begin
Ip:=inttostr(Ord(MyHost.h_addr^[i-1]));
ShowMessage('IP分段地址为:'+Ip);
IPStr:=IPStr+Ip;
if i<4 then IPStr:=IPStr+'.'
else ShowMessage('IP地址为:'+IPStr);
end;
end;
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);
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 do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
========================================
program get_ip;
uses
winsock,sysutils;
VAR
ch : ARRAY[1..32] OF Char;
i : Integer;
WSData: TWSAData;
MyHost: PHostEnt;
begin
IF WSAstartup(2,wsdata)<>0 THEN
BEGIN
Writeln('can''t start Winsock: Error ',WSAGetLastError);
Halt(2);
END;
try
IF getHostName(@ch[1],32)<>0 THEN
BEGIN
Writeln('getHostName failed');
Halt(3);
END;
except
Writeln('getHostName failed');
halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
IF MyHost=NIL THEN
BEGIN
Writeln(GetHostName('+StrPas(@ch[1])+') failed : Error
'+IntToStr(WSAGetLastError));
Halt(4);
END
ELSE
BEGIN
Write('address ');
FOR i:=1 TO 4 DO
BEGIN
Write(Ord(MyHost.h_addr^[i-1]));
IF i<4 THEN
then write('.')
ELSE
writeln;
END;
END;
end.
===========================================
delphi的demos里有一个例子就是这么用的。
begin
showmessage(NMDayTime1.LocalIP);
end;