【发布时间】:2013-12-13 13:48:21
【问题描述】:
需要在FireMonkey3下检测本地IP地址。在 VCL 版本中,我一直在使用单元 WinSock 及其方法
WSAStartup(...)
gethostname(...)
一个限制:不需要使用任何第三方库。我正在将 ASTA 组件移植到 FireMonkey3 平台,并且不想在组件之间做依赖。
【问题讨论】:
标签: delphi firemonkey-fm3 wsastartup
需要在FireMonkey3下检测本地IP地址。在 VCL 版本中,我一直在使用单元 WinSock 及其方法
WSAStartup(...)
gethostname(...)
一个限制:不需要使用任何第三方库。我正在将 ASTA 组件移植到 FireMonkey3 平台,并且不想在组件之间做依赖。
【问题讨论】:
标签: delphi firemonkey-fm3 wsastartup
如果您需要跨平台解决方案,请尝试使用 Indy 和 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;
【讨论】:
TIdStack.IncUsage() 以确保 GStack 指针有效,然后在使用时调用 TIdStack.DecUsage()已经完成了。
AddLocalAddressesToList() 尚未在 Android 上实现,但应该可以在 iOS 上运行。
cross-platform。但是你对 android 有什么建议!?
NetworkInterface.getNetworkInterfaces() 和 NetworkInterface.getInetAddresses() 方法,或 WifiManager.getConnectionInfo().getIpAddress() 方法。