как правильно использовать gethostbyname

Тема в разделе "WASM.NETWORKS", создана пользователем 10_Brasil, 6 ноя 2006.

  1. 10_Brasil

    10_Brasil New Member

    Публикаций:
    0
    Иногда случаются вылеты, подскажите как правильно использовать эту функцию, если можно с рабочим, не глючным примером.

    Код (Text):
    1. DWORD __stdcall get_inet_addr(DWORD* lpSin_addr,LPSTR lpszHostName)
    2. {
    3.  
    4.     DWORD   ret=0;
    5.     hostent *lphost;
    6.  
    7.     if((*(DWORD*) lpSin_addr=inet_addr(lpszHostName))==INADDR_NONE)
    8.     {
    9.         if((lphost=gethostbyname(lpszHostName)))
    10.         {
    11.             *(DWORD*) lpSin_addr=**(DWORD**) lphost->h_addr_list;
    12.             ret++;
    13.         }
    14.     }
    15.     else
    16.     {
    17.         ret++;
    18.     }
    19.    
    20.     return  ret;
    21.    
    22. }
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Поиск по форуму.
     
  3. 10_Brasil

    10_Brasil New Member

    Публикаций:
    0
    видел, но кто может объяснить почему в 95% работает в остальных 5% вылет? использую в цикле, очень часто, в нескольких потоках
     
  4. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Неужели так трудно посмотреть в отладчике адрес исключения?
    Исходя из того что ты дал, вылететь может, имхо, только если lpSin_addr==нул.
     
  5. 10_Brasil

    10_Brasil New Member

    Публикаций:
    0
    естественно исключение возникает кодом что я влез в недопустимую память, и нулями там не пахнет, проверь у себя код
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    10_Brasil

    Простите за поднятие древней темы, но в галимом линуксе gethostbyname не безопасна с точки зрения многопоточности. Там есть какой-то безопасный аналог.
     
  7. nester7

    nester7 New Member

    Публикаций:
    0
    Насколько помню в Windows и FreeBSD было тоже самое.
     
  8. CRONUZ

    CRONUZ New Member

    Публикаций:
    0
    Зачем так усложнять
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    CRONUZ
    Зачем поднимать тему?