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-сервис, и посмотрите, имеет ли это значение.

Другие вопросы по тегам