【问题标题】:Delphi GetHostByName equivalent for firemonkey?德尔福GetHostByName相当于firemonkey?
【发布时间】:2017-08-27 19:11:20
【问题描述】:

是否有适用于桌面 Win32/Win64/Mac 的 Firemonkey 的 GetHostByName 等效项?

【问题讨论】:

    标签: delphi firemonkey gethostbyname


    【解决方案1】:

    查看System.Net.Socket,您会发现TIPAddress.LookupName 具有您正在寻找的实现。在 Posix 上,它从 Posix.NetDB 调用 gethostbyname

    【讨论】:

    • 仅供参考,TIPAddress.LookupName 中存在一个错误:quality.embarcadero.com/browse/RSP-12829 它影响 Delphi 10 Seattle 并已在 Delphi 10.1 Seattle 中修复.
    • @RenéHoffmann 这被标记为已解决,但实际上在 Delphi 10.2 Tokyo 中仍未修复
    【解决方案2】:

    如果您使用 Indy,它的跨平台 TIdStack 接口具有公共 ResolveHost()HostByName() 方法(其中 ResolveHost() 调用 HostByName() 以获取还不是 IP 地址的输入)。 HostByName() 在内部使用 getaddrinfo()gethostbyname(),具体取决于平台。

    但需要注意的是,此类平台函数返回的 IP 地址列表中可以包含多个 IP,但 ResolveHost()/HostByName() 目前仅返回列表中的第一个 IP。如果您需要完整列表,则必须下拉到平台层并直接调用套接字函数。

    【讨论】:

    • 谢谢,我一定会看看 TIdStack,它似乎比我目前的解决方案更容易。
    猜你喜欢
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多