得到本机的IP地址

mmkill 2004-10-29 11:08:37
当本机连到Internet时,怎么样得到本机的Internet地址呢,请指教
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
todouwang 2004-10-30
  • 打赏
  • 举报
回复
1.开始->运行->cmd->ipconfig
用winexec或shellexec应该能调用
2.记得好象有gethostip这样的方法可调用,
你用indy的主件,比如,idudpclient看看,也许能找到。
ksaiy 2004-10-30
  • 打赏
  • 举报
回复
不好意思.看错题目了。下面这个才是取连接integer时的IP地址.

uses
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;
ksaiy 2004-10-30
  • 打赏
  • 举报
回复
uses
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;
山娃马小三儿 2004-10-30
  • 打赏
  • 举报
回复
楼上说得对,Indy控件大部分都有LocalIP的属性
dinyy 2004-10-30
  • 打赏
  • 举报
回复
delphi7 -> indy Misc -> IdIPWatch 控件

IdIPWatch1.LocalIP 就是本机IP
smiler007 2004-10-29
  • 打赏
  • 举报
回复
我也想知道....顶一下

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧