delphi - inet_addr 对于 localhost 返回 -1

标签 delphi winsock delphi-xe

使用Delphi XE和winsock单元

我有以下代码:

var
  fHost: AnsiString;
begin
  inet_addr(PAnsiChar(fhost));

fHost 可以是 IP 地址或主机名。

fhost = '127.0.0.1'时,它工作正常,但是,当fHost = 'localhost'时,调用失败并返回-1。我注意到在我的复杂应用程序中,inet_addr 无法解析任何主机名,并且仅适用于 IP 地址。

如果我将此代码取出到一个简单的测试应用程序中,那么解析本地主机(和主机名)就可以正常工作。

我尝试将行 127.0.0.1 localhost 添加到主机文件中,但没有任何区别。

为什么这段代码在一个应用程序中会失败,而在一个简单的测试工具中却每次都能工作?

最佳答案

您的测试代码可能不正确,inet_addr 将包含 IP 地址的字符串转换为数值,它解析主机。为此,请使用gethostbyname

关于delphi - inet_addr 对于 localhost 返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6042287/

相关文章:

c# - 什么是 C# 中的 Delphi "shl"?

mysql - 通过 FireDac 和 MySql 的主/详细数据快照 ¿为什么在一个客户端中写入详细记录的数据在第二个客户端中看不到?

c++ - 如何使用 winsock 1.1 版实现 icmp 数据包处理程序?

c++ - 网络和消息

c++ - 套接字聊天系统 - 将它们广播给所有客户端

delphi - 如何在Delphi中解析JSON字符串?

delphi - 推荐用于 Delphi 棋盘游戏的 2D Sprite 引擎?

delphi - 如何确定 TRttiMethod 是否为函数

delphi - 如何制作带有透明图形的firemonkey按钮,并使其成为默认样式

delphi - 我想禁用 JEDI 字符串属性编辑器