Wenn keine IP vorhanden Absturz



  • Ich möchte in meiner Anwendung die LAN-IP ermitteln. Dies
    funktioniert auch wunderbar, solange der PC auch wirklich
    eine IP bekommen hat. Ist dies jedoch einmal nicht der Fall
    (Stecker gezogen o.ä.) schmiert mir meine Anwendung ab.

    Ich bin mir nicht sicher wie ich nun ermitteln soll ob
    der PC wirklich eine IP hat, ohne gleich den Absturz
    der Anwendung wieder zu verursachen.

    CString m_tos2;
    int ip1a, ip2a, ip3a, ip4a;
    //lanip
    AfxSocketInit(NULL); hostent *hEnt = 0;
    char hostname[20]; gethostname(hostname,20); 
    hEnt = gethostbyname( hostname ); if ( hEnt ) { 
    CString m_ipadresse = inet_ntoa( *(LPIN_ADDR)*hEnt->h_addr_list ); 
    UpdateData(FALSE);
    
    sscanf(m_tos2,"%d.%d.%d.%d", &ip1a, &ip2a, &ip3a, &ip4a); 
    }
    
    //pcname
    struct hostent *pHostInfo;  
    unsigned long IPAddress = inet_addr(m_tos2); 
    WSADATA  WSAData; 
    memset(&WSAData, 0, sizeof(WSAData));
    
    if(::WSAStartup(MAKEWORD(1, 0), &WSAData) == FALSE)
    {
    pHostInfo = ::gethostbyaddr(reinterpret_cast<char *>(&IPAddress),sizeof(unsigned long),AF_INET);
    }
    if(!pHostInfo)
    {
        WSACleanup();
    }
    
    CString testname ="Name des PC: ";
    testname+=pHostInfo->h_name;
    

    Setze ich m_tos2 auf 127.0.0.1 wenn m_tos2=="" ist, dann habe ich
    den PC-Namen wiederum mit dem wert "localhost" belegt was ja in
    Bezug auf die IP richtig ist, aber der PC hat ja auch einen eigenen
    namen... 🙄 Boah steh ich auf dem Schlauch !!



  • Hat sich scheinbar erledigt war im falschen Codeteil. Habe den
    PC-Namen ja doch anders ermittelt hals hier beschrieben.
    Wenn ich nicht über die IP gehe um den Namen zu holen ist alles i.O.



  • Na denn 😉
    (Beim Ursprungspost wäre die Angabe der Zeile in der die Anwendung abschmiert interessant gewesen ;D)


Anmelden zum Antworten