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;
解决方案 »
- 关于字符串列表排序的困惑!
- 哈欠老大结婚了??!!Kao~~ 只前一点消息都没有,放分庆祝一下先
- 把窗体当作通用对象处理可以吗?
- ★★★升水星了★★★
- Delphi是什么东东。是关于那方面的。其基础语言是什么。。有什么好处。。。???
- 构造SQL 语句的问题!
- 一个关于新闻组的笨问题,希望别笑!
- ..................................怒了.......................................
- 高人点拨一下:用MessageBox提示窗体,按Cancel键..如何实现取消本次操作,谢谢!!
- 将查询到的数据库中的一段记录插入另一数据库表,Tquery执行报错!全天在线。
- 日期相减?
- 救救我吧!
function getlocalip():string;
var
phoste:PHostEnt;
Buffer:array[0..100] of char;
begin
GetHostName(Buffer,Sizeof(Buffer));
phoste:=GetHostByName(buffer);
if phoste = nil then
begin
showmessage('wrong!');
result:='';
end
else
result:=StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
end;
去试试吧!我在Delphi5+nt4(sp6)下通过。
就会有这样两个组件TCP,UDP, 这时取得本机IP真是易如反掌了
你只要在FORM中加入TCP,
你在代码中只要写上这么一句就包你行了.
tcp1.localIP //get local host IP
tcp1.localHostname // get local computer nameanother tell you a API Fuction order to get computer user
this API Fuction is : BOOL GetUserName(LPTSTR lpBuffer, //存放名称的地址
LPDWORD nSize //存放名称的长度的地址 );
注意这个winsock activex controls 在 DELPHI 5 的光盘中就有.
试试看吧! 包你满意!
//取得本机IP地址
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;