得到本机的IP地址 当本机连到Internet时,怎么样得到本机的Internet地址呢,请指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 delphi7 -> indy Misc -> IdIPWatch 控件IdIPWatch1.LocalIP 就是本机IP 楼上说得对,Indy控件大部分都有LocalIP的属性 usesWinsock;function GetIPAddress : string;var Sdata : TWSAData; ErrorCode: Integer; HEnt: PHostEnt; IPAddr : TInAddr; CName : PChar; iSize : longword;begin isize := MAX_COMPUTERNAME_LENGTH; GetMem(CName, iSize); Try GetComputerName(CName, iSize); ErrorCode := WSAStartup($0101, SData); if ErrorCode = 0 then begin Try HEnt := GetHostbyName(CName); if HEnt <> nil then begin with IPAddr, HEnt^ do begin S_un_b.s_b1 := h_addr^[0]; S_un_b.s_b2 := h_addr^[1]; S_un_b.s_b3 := h_addr^[2]; S_un_b.s_b4 := h_addr^[3]; end; Result := inet_ntoa(IPAddr); end; finally ErrorCode := WSACleanup; end; end; finally FreeMem(CName); end;end;//调用:procedure TForm1.Button1Click(Sender: TObject);begin Edit1.Text:=GetIPAddress;end; 不好意思.看错题目了。下面这个才是取连接integer时的IP地址.usesWinsock;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;//调用:procedure TForm1.Button2Click(Sender: TObject);begin Edit1.Text:=LocalIP;end; 1.开始->运行->cmd->ipconfig 用winexec或shellexec应该能调用2.记得好象有gethostip这样的方法可调用, 你用indy的主件,比如,idudpclient看看,也许能找到。 datasnap clientdataset missing dataprovider 在服务程序里连接数据库的问题 容器控件的焦点获得问题 NMConst.dcu是什么文件? 不知道delphi7什么时候出中文版,中国这么多人用delphi,他为什么不像ms那样做的很到位? 關於Quick Report打印 .wmf 圖像的問題 delphi7 的报表组件哪儿去了? 关键字“nil” 有没有人用OPENGL做过GIS系统? 求救!我用GETOPENFILENAME函数怎么不能打开对话框? 有关case integer of 的理解? 关于CommaText方法?
Winsock;function GetIPAddress : string;
var
Sdata : TWSAData;
ErrorCode: Integer;
HEnt: PHostEnt;
IPAddr : TInAddr;
CName : PChar;
iSize : longword;
begin
isize := MAX_COMPUTERNAME_LENGTH;
GetMem(CName, iSize);
Try
GetComputerName(CName, iSize);
ErrorCode := WSAStartup($0101, SData);
if ErrorCode = 0 then
begin
Try
HEnt := GetHostbyName(CName);
if HEnt <> nil then
begin
with IPAddr, HEnt^ do
begin
S_un_b.s_b1 := h_addr^[0];
S_un_b.s_b2 := h_addr^[1];
S_un_b.s_b3 := h_addr^[2];
S_un_b.s_b4 := h_addr^[3];
end;
Result := inet_ntoa(IPAddr);
end;
finally
ErrorCode := WSACleanup;
end;
end;
finally
FreeMem(CName);
end;
end;//调用:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=GetIPAddress;
end;
Winsock;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;//调用:
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=LocalIP;
end;
用winexec或shellexec应该能调用
2.记得好象有gethostip这样的方法可调用,
你用indy的主件,比如,idudpclient看看,也许能找到。