怎样得出本机的IP地址
解决方案 »
- delphi怎样把.tlb文件编译到工程文件中
- 请各位大侠帮小弟看看下面的算法代码,总是和预期的目标有所出入,请指正,谢谢!
- 编译时提示无法找到文件
- 怎样使用TRichView或TRichViewEdit保存Gif动画到RVF或RTF文件中?
- 有关对象创建问题(在线结帖)
- 公历转农历,农历转公历??
- 怎样动态连接上SQL 数据库?
- 為什麼這樣的存儲過程不能寫入所需數據,每次只是寫入一筆空記錄,請指點,他不夠可以再加
- 请教高手:
- 我想单击DBGrid控件某个记录时这条记录能显示跟其他记录不一样的颜色,并把这条记录的信息提供给其他窗体使用,我该怎么做
- vc中time_t中的开始时间用delphi中TDateTime表示是多少?
- 有关Treelist控件的一个问题
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.
===========================================
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(IdIPWatch1.LocalIP);
end;
function TFrmChat.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(MakeWord(2,0), 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;
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;
procedure TForm1.Button4Click(Sender: TObject);
var
result:string;
begin
result:=localip;
showmessage('本机ip地址为: '+result);
end;