可放一个IDIPWatch控件(该控件在Indy Misc页) var myIP:String; begin IDIPWatch1.Active:=True; myIP:=IDIPWatch1.LocalIP; //获得IP地址 end;也有写代码获得I地址的,楼主可在CSDN里搜索搜索...
function Get_compuerName: string; var str_ComputerName: string; wVersionRequested: WORD; // uses Winsock wsaData: TWSAData; p: PHostEnt; s: array[0..128] of char; p2: pchar; begin result := ''; wVersionRequested := MAKEWORD(1, 1); WSAStartup(wVersionRequested, wsaData); GetHostName(@s, 128); p := GetHostByName(@s); str_ComputerName := p^.h_Name; result := str_ComputerName; WSACleanup; end;function GetIP: string; var str_LocalIP: string; wVersionRequested: WORD; // uses Winsock wsaData: TWSAData; p: PHostEnt; s: array[0..128] of char; p2: pchar; begin result := ''; // SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL wVersionRequested := MAKEWORD(1, 1); WSAStartup(wVersionRequested, wsaData); GetHostName(@s, 128); p := GetHostByName(@s); p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^); str_LocalIP := p2; result := str_LocalIP; end;
转贴的:取得本机IP function LocalIP: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; ======================================== 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. ===========================================
Function GetLocalIp(InternetIP:boolean):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; IP: String; begin Screen.Cursor := crHourGlass; try WSAStartup($101, GInitData); IP:='0.0.0.0'; GetHostName(Buffer, SizeOf(Buffer)); phe := GetHostByName(buffer); if phe = nil then begin //ShowMessage(IP); Result:=IP; Exit; end; pPtr := PaPInAddr(phe^.h_addr_list); if InternetIP then begin I := 0; while pPtr^[I] <> nil do begin IP := inet_ntoa(pptr^[I]^); Inc(I); end; end else IP := inet_ntoa(pptr^[0]^); WSACleanup; Result:=IP; finally Screen.Cursor := crDefault; end; end;
楼上几位的方法也可试一下: function pGetCurIP : 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;
请问 TWSAData 包含在什么单元里?
获取本机用户名和IP地址 1、在uses单元添加Sockets引用;2、添加一个标签和一个按钮;3、代码: procedure TForm1.Button1Click(Sender: TObject); var tp:TTcpclient; strname,straddr:string; begin tp:=TTcpclient.create(self); tp.close; tp.open; strname:=tp.LocalHostName; straddr:=tp.LocalHostAddr; label1.caption:=strname+' IP: '+straddr; tp.close; end;
改一下wasi(小铁) 的代码unit UnitTools;interfaceuses Windows, Winsock;function GetIP: string; function Get_compuerName: string;implementation // Get Local Machine IP // Use Unit // Windows, Winsock; // Return Machine's IP String function GetIP: string; var p: PHostEnt; s: array[0..128] of char; begin result := ''; GetHostName(@s, 128); p := GetHostByName(@s); result := iNet_ntoa(PInAddr(p^.h_addr_list^)^); end; // Get Local Machine Name // Use Unit // Windows; // Return Machine's Name String function Get_compuerName: string; var str_ComputerName: string; p: PHostEnt; s: array[0..128] of char; begin result := ''; GetHostName(@s, 128); p := GetHostByName(@s); str_ComputerName := p^.h_Name; result := str_ComputerName; end;end.
var
myIP:String;
begin
IDIPWatch1.Active:=True;
myIP:=IDIPWatch1.LocalIP; //获得IP地址
end;也有写代码获得I地址的,楼主可在CSDN里搜索搜索...
var
str_ComputerName: string;
wVersionRequested: WORD; // uses Winsock
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of char;
p2: pchar;
begin
result := '';
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
str_ComputerName := p^.h_Name;
result := str_ComputerName;
WSACleanup;
end;function GetIP: string;
var
str_LocalIP: string;
wVersionRequested: WORD; // uses Winsock
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of char;
p2: pchar;
begin
result := ''; // SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
str_LocalIP := p2;
result := str_LocalIP;
end;
function LocalIP: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;
========================================
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.
===========================================
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
IP: String;
begin
Screen.Cursor := crHourGlass;
try
WSAStartup($101, GInitData);
IP:='0.0.0.0';
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then
begin
//ShowMessage(IP);
Result:=IP;
Exit;
end;
pPtr := PaPInAddr(phe^.h_addr_list);
if InternetIP then
begin
I := 0;
while pPtr^[I] <> nil do
begin
IP := inet_ntoa(pptr^[I]^);
Inc(I);
end;
end
else
IP := inet_ntoa(pptr^[0]^);
WSACleanup;
Result:=IP;
finally
Screen.Cursor := crDefault;
end;
end;
function pGetCurIP : 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;
1、在uses单元添加Sockets引用;2、添加一个标签和一个按钮;3、代码:
procedure TForm1.Button1Click(Sender: TObject);
var
tp:TTcpclient;
strname,straddr:string;
begin
tp:=TTcpclient.create(self);
tp.close;
tp.open;
strname:=tp.LocalHostName;
straddr:=tp.LocalHostAddr;
label1.caption:=strname+' IP: '+straddr;
tp.close;
end;
添加一个IdIPWatch1控件.
IdIPWatch1.LocalIP返回ip地址。计算机名:
getcomputername(computername,255);
Windows, Winsock;function GetIP: string;
function Get_compuerName: string;implementation
// Get Local Machine IP
// Use Unit
// Windows, Winsock;
// Return Machine's IP String
function GetIP: string;
var
p: PHostEnt;
s: array[0..128] of char;
begin
result := '';
GetHostName(@s, 128);
p := GetHostByName(@s);
result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
// Get Local Machine Name
// Use Unit
// Windows;
// Return Machine's Name String
function Get_compuerName: string;
var
str_ComputerName: string;
p: PHostEnt;
s: array[0..128] of char;
begin
result := '';
GetHostName(@s, 128);
p := GetHostByName(@s);
str_ComputerName := p^.h_Name;
result := str_ComputerName;
end;end.