inet_addr为localhost返回-1

时间:2011-05-18 09:07:36

标签: 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地址。

如果我把这个代码带到一个简单的测试应用程序,那么解析localhost(和主机名)就可以了。

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

为什么这个代码在一个应用程序中失败并且每次都在一个简单的测试工具中工作?

1 个答案:

答案 0 :(得分:4)

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