使用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/