Про DNS

Тема в разделе "WASM.NETWORKS", создана пользователем Protorus, 23 мар 2010.

  1. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Такая проблема. Есть код, где нужно определить IP по имени.
    Пытался пользоваться gethostbyname, затем getaddrinfo и даже DnsQuery_A.
    Всегда при вызове данных фунцций возникает исключение. Виной тому, как выходит, отключенная служба DNS.
    Почему так, ведь все сетевые приложения пользуются этими функциями и не падают же.
    И как дальше быть? Очень не хочется вручную формировать DNS запрос.
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Почему ты решил, что служба? Скорее всего ты просто неправильно вызываешь функции, раз возникает исключение. При отключенной службе тебе бы просто дали "отлуп" программно.
     
  3. deshiko

    deshiko New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    42
    А можно увидеть код?
     
  4. 008888

    008888 New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2008
    Сообщения:
    17
    DnsQuery_A() + GetLastError() = определение ошибки, а затем гляди winerror.h
     
  5. Protorus

    Protorus New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2009
    Сообщения:
    51
    Да, походу на службу я зря грешу. Что-то не то у меня.
    Вот такой код допустим есть:
    Код (Text):
    1.         format  PE CONSOLE
    2.         entry   start
    3.  
    4.         include 'win32a.inc'
    5.  
    6. section '.data' data readable writeable
    7.  
    8.         ws2_32 db 'ws2_32.dll',0
    9.         wsadata WSADATA
    10.         sock  sockaddr_in
    11.         HOST db 'google.com',0
    12.  
    13. section '.code' code readable executable
    14.  
    15. start:
    16.  
    17.         invoke  LoadLibrary, ws2_32
    18.  
    19.         mov     EBX, EAX
    20.  
    21.         invoke  WSAStartup, 0202h, wsadata
    22.  
    23. A:      invoke  gethostbyname, HOST
    24.  
    25. B:      invoke  socket, AF_INET, SOCK_STREAM, 0  ; IPPROTO_TCP
    26.  
    27.         mov     ESI, EAX
    28.  
    29. C:      invoke  socket, AF_INET, SOCK_DGRAM, 0  ; IPPROTO_UDP
    30.  
    31.         mov     EDI, EAX
    32.  
    33.         invoke  closesocket, EDI
    34.  
    35.         invoke  closesocket, ESI
    36.  
    37.         invoke  WSACleanup
    38.  
    39.         invoke  FreeLibrary, EBX
    40.  
    41.         invoke  ExitProcess, NULL
    42.  
    43. section '.idata' import data readable writeable
    44.  
    45.         library kernel32,'kernel32.dll',wsock32,'wsock32.dll'
    46.         include '\api\kernel32.inc'
    47.         include '\api\wsock32.inc'
    Так вот, при трассировке в Оле, в функциях по метке A и C возникает исключение, по метке B все хорошо.
    При включении службы DNS, при трассировке, функция по метке A, исключения не вызывает, по С - вызывает.
    Без Оли все работают нормально. Раньше, буквально недавно, такого не наблюдалось. Единственное что обновлял - базы KIS (может и модули какие заодно).
    Что не так?
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    А надо offset HOST