Delphi inet_addr为localhost返回-1
使用delphixe和winsock单元 我有以下代码:Delphi inet_addr为localhost返回-1,delphi,winsock,delphi-xe,Delphi,Winsock,Delphi Xe,使用delphixe和winsock单元 我有以下代码: var fHost: AnsiString; begin inet_addr(PAnsiChar(fhost)); fHost可以是ip地址或主机名 当fhost='127.0.0.1'时,它工作正常,但是当fhost='localhost'时,调用失败并返回-1。我注意到,在我的复杂应用程序中,inet\u addr无法解析任何主机名,只能处理ip地址 如果我把这段代码带到一个简单的测试应用程序中,那么解析localhost(
var
fHost: AnsiString;
begin
inet_addr(PAnsiChar(fhost));
fHost
可以是ip地址或主机名
当fhost='127.0.0.1'
时,它工作正常,但是当fhost='localhost'
时,调用失败并返回-1。我注意到,在我的复杂应用程序中,inet\u addr
无法解析任何主机名,只能处理ip地址
如果我把这段代码带到一个简单的测试应用程序中,那么解析localhost(和主机名)就可以了
我尝试将行127.0.0.1 localhost
添加到hosts文件中,但没有任何区别
为什么此代码在一个应用程序中失败,并且在一个简单的测试线束中每次都能工作?您的测试代码可能不正确,
inet\u addr
将包含IP地址的字符串转换为数字值,它不会解析主机。使用gethostbyname
进行此操作 您的测试代码可能不正确,inet\u addr
将包含IP地址的字符串转换为数值,它不会解析主机。使用gethostbyname
进行此操作 顺便说一句,-1是INADR_NONE,预期的错误返回值我已解决此问题。我的应用程序在Delphi 2007中从Delphi 2007转换为Delphi XE,由于Delphi XE中的未知原因,winsock.pas定义了INADDR_NONE=-1,winsock.pas定义了INADDR_NONE=DWORD($ffffffffff);这意味着我解析localhost的代码在if(res=INADDR_NONE)的情况下从未被调用。感谢您抽出时间回答我的问题。顺便说一句,-1不存在。无,预期错误返回值我已解决此问题。我的应用程序在Delphi 2007中从Delphi 2007转换为Delphi XE,由于Delphi XE中的未知原因,winsock.pas定义了INADDR_NONE=-1,winsock.pas定义了INADDR_NONE=DWORD($ffffffffff);这意味着我解析localhost的代码在if(res=INADDR_NONE)的情况下从未被调用。谢谢你花时间回答我的问题。这是我的错,因为我输入了我想要一个解决的地址。我不。我想要inet\u addr
@Paul Endersby的正确结果:当你给出inet\u addr
除文字IP以外的任何内容时,它将返回INADDR\u NONE
aka-1
inet\u addr
无法用于转换“localhost”-“localhost”不是IP。这是我键入需要解析地址的错误。我不。我想要inet\u addr
@Paul Endersby的正确结果:当你给出inet\u addr
除文字IP以外的任何内容时,它将返回INADDR\u NONE
aka-1
inet\u addr
不能用于转换“localhost”-“localhost”不是IP。