使用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
添加到主机文件中,这没有任何区别。
为什么这个代码在一个应用程序中失败并且每次都在一个简单的测试工具中工作?
答案 0 :(得分:4)
您的测试代码可能不正确,inet_addr
将包含IP地址的字符串转换为数字值,不解析主机。请使用gethostbyname
。