Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi inet_addr为localhost返回-1_Delphi_Winsock_Delphi Xe - Fatal编程技术网

Delphi inet_addr为localhost返回-1

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(

使用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(和主机名)就可以了

我尝试将行
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。