1

Я использую следующий код, результаты верны. Я работаю в локальной сети только с 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 Configuration

        Host Name . . . . . . . . . . . . : XXX
        Primary Dns Suffix  . . . . . . . : 
        Node Type . . . . . . . . . . . . : Unknown
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . : 
        Description . . . . . . . . . . . : Realtek RTL8139/810x Family Fast Ethernet NIC
        Physical Address. . . . . . . . . : 00-XX-XX-XX-xx-XX
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 192.168.1.123
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.1.1
        DNS Servers . . . . . . . . . . . : 202.149.208.90
                                            202.149.208.11

1 ответ1

0

Возможно, у вас два DNS-сервера, и первый из них не работает, поэтому ваш компьютер с Windows ожидает тайм-аута от первого хоста (10+ с), а затем пробует второй DNS. Попробуйте сменить dns на что-то другое, например, на какой-нибудь общедоступный dns-сервис, и посмотрите, имеет ли это значение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .