2013-12-13 189 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上工作。 –