【发布时间】:2017-08-27 19:11:20
【问题描述】:
是否有适用于桌面 Win32/Win64/Mac 的 Firemonkey 的 GetHostByName 等效项?
【问题讨论】:
标签: delphi firemonkey gethostbyname
是否有适用于桌面 Win32/Win64/Mac 的 Firemonkey 的 GetHostByName 等效项?
【问题讨论】:
标签: delphi firemonkey gethostbyname
查看System.Net.Socket,您会发现TIPAddress.LookupName 具有您正在寻找的实现。在 Posix 上,它从 Posix.NetDB 调用 gethostbyname。
【讨论】:
TIPAddress.LookupName 中存在一个错误:quality.embarcadero.com/browse/RSP-12829 它影响 Delphi 10 Seattle 并已在 Delphi 10.1 Seattle 中修复.
如果您使用 Indy,它的跨平台 TIdStack 接口具有公共 ResolveHost() 和 HostByName() 方法(其中 ResolveHost() 调用 HostByName() 以获取还不是 IP 地址的输入)。 HostByName() 在内部使用 getaddrinfo() 或 gethostbyname(),具体取决于平台。
但需要注意的是,此类平台函数返回的 IP 地址列表中可以包含多个 IP,但 ResolveHost()/HostByName() 目前仅返回列表中的第一个 IP。如果您需要完整列表,则必须下拉到平台层并直接调用套接字函数。
【讨论】: