gethostbyaddr слишком медленный
Я использую следующий код, результаты верны. Я работаю в локальной сети всего с 3 машинами. Также эта сеть не подключена к Интернету. Это займет 16 секунд только для этой линии
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
GetHostByName(PChar(HostName)); is instant (delphitricks.com/source-code/internet/…)
function IPAddrToName(IPAddr: string): string;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr));
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt <> nil then
Result := StrPas(Hostent^.h_name)
else
Result := '';
end;
https://stackoverflow.com/questions/3446879/gethostbyaddr-too-slow
Результат ipcofig /all (с машины, на которой запущен gethostbyaddr)
Конфигурация Windows IP
Имя хоста.,,,,,,,,,,,: XXX
Первичный DNS суффикс.,,,,,,:
Тип узла.,,,,,,,,,,,: Неизвестно
IP-маршрутизация включена.,,,,,,,: Нет
WINS Proxy включен.,,,,,,,: Нет
Ethernet-адаптер Local Area Connection:
DNS-суффикс для конкретного подключения.:
Описание.,,,,,,,,,,: Realtek RTL8139/810x Семейный сетевой адаптер Fast Ethernet
Физический адрес.,,,,,,,,: 00-XX-XX-XX-XX-XX
Dhcp включен.,,,,,,,,,,: Нет
Айпи адрес.,,,,,,,,,,,: 192.168.1.123
Маска подсети.,,,,,,,,,,: 255.255.255.0
Шлюз по умолчанию.,,,,,,,,: 192.168.1.1
DNS-серверы.,,,,,,,,,,: 202.149.208.90
202.149.208.11
1 ответ
Возможно, у вас два DNS-сервера, и первый не работает, поэтому ваш компьютер с Windows ожидает тайм-аута от первого хоста (10+ с), а затем пытается второй DNS. Попробуйте сменить dns на что-то другое, например, на какой-нибудь общедоступный dns-сервис, и посмотрите, имеет ли это значение.