inet_addr возвращает -1 для локального хоста - PullRequest
1 голос
/ 18 мая 2011

Использование 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 в файл hosts, и это не имело значения.

Почему этот код в одном приложении не работает и каждый раз работает простой тестовый комплект?

1 Ответ

4 голосов
/ 18 мая 2011

Ваш тестовый код, вероятно, неправильный, inet_addr преобразует строку, содержащую IP-адрес, в числовое значение, не разрешает хосты.Для этого используйте gethostbyname.

...