2013-12-13 137 views
3

需要检测FireMonkey3下的本地IP地址。在VCL的版本,我已经使用单位的WinSock与它检测FireMonkey3下的本地IP地址

WSAStartup(...) 
gethostname(...) 

一个限制方法:不需要使用任何第三方库。我将ASTA组件移植到FireMonkey3平台,并且不想在组件之间进行依赖关系。

+0

使用印这一点。 –

回答

9

如果你需要一个跨平台解决方案尝试使用印并列入IdStack单元

TIdStack.AddLocalAddressesToList方法试试这个样本

var 
    AAddresses: TStrings; 
begin 
    AAddresses := TStringList.Create; 
    try 
    TIdStack.IncUsage; 
    try 
     GStack.AddLocalAddressesToList(AAddresses); 
    finally 
     TIdStack.DecUsage; 
    end; 
    if AAddresses.Count > 0 then 
     //do something 
    finally 
    AAddresses.Free; 
    end; 
end; 
+3

如果当时没有实例化任何Indy组件,则必须在使用之前手动调用'TIdStack.IncUsage()'以确保'GStack'指针有效,然后在调用'TIdStack.DecUsage()'时调用'TIdStack.DecUsage你已经完成了。 –

+0

@RemyLebeau这个返回只是127.0.0.1对我来说,在SDK和移动设备上,但我有通过WiFi访问网络... –

+1

@peimanF .:你使用Android? 'AddLocalAddressesToList()'还没有在Android上实现,但应该在iOS上工作。 –