Auslesen u. Anzeigen d. IP Help



  • Hi,

    ich habe mal wieder ein Frage, für die ich zwar
    Codebeispiele, aber keine genaue Erklärung gefunden habe.
    Ich versuche in das Steuerelement "IP-Adresse" den untenstehenden
    Code einzubinden(aus der FAQ) :

    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);
     }
    

    Ich habe bereits die Variable(m_ipadresse) dem Steuerlement
    zugeordnet. Auch habe ich #include <afxcmn.h> eingebunden.
    Nur wie muß ich den Code zuordnen ? Gehört der nicht in meine
    Funktion ? Ich erhalte da nur Fehlermeldungen.
    Irgendwie muß man das doch zum laufen bekommen 😕

    Ein schon etwas verzweifelter

    Chris



  • AfxSocketInit(NULL);
        hostent *hEnt = 0;
        char hostname[20];
        gethostname(hostname,20);
        hEnt = gethostbyname( hostname );
        if ( hEnt )
        {
            m_ip.SetWindowText(inet_ntoa( *(LPIN_ADDR)*hEnt->h_addr_list ));
        }
    

    m_ip ist vom Typ

    CIPAddressCtrl m_ip;



  • Confirmed 😃

    Läuft einwandfrei.

    THX UNIX-TOM

    Chris



  • Weitere Frage:

    in der FAQ habe ich folgenden Quelltext zum auslesen des Computernamens(Fremd PC) anhand der IP gefunden(by Commander, Thema: Netzwerk...):

    struct hostent *pHostInfo;  //SO muss es deklariert werden 
    unsigned long IPAddress = inet_addr(m_to); //in m_to steht die abzufragende IP
    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 test = pHostInfo->h_name;    //wandelt die struct wohl in ne string um   ;)
    MessageBox(test,"test",MB_OK);
    

    Frage: warum bekomme ich beim umsetzen des Quelltextes diesen Fehler
    --> inet_addr' : Konvertierung des Parameters 1 von 'class CIPAddressCtrl' in 'const char *' nicht moeglich. Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden

    ws2_32.lib wurde gelinkt.
    Was mache ich da möglicherweise falsch ?

    Chris



  • Wie hast du m_to deklariert???
    Ich habe dort einen CString benutzt, und es klappt super!
    Mach es mal so:

    CString m_to;
    m_to = "000.000.000.000";  //Geb mal hier deine IP ein
    struct hostent *pHostInfo;  
    unsigned long IPAddress = inet_addr(m_to); 
    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 test = pHostInfo->h_name;    //wandelt die struct wohl in ne string um   ;)
    MessageBox(test,"test",MB_OK);
    

    Also bei mir funzt es, wie gesagt ich denke das du m_to anders deklariert hast



  • Hi C-O-M-M-A-N-D-E-R,

    Ich habe ein Steuerelement "IP_Adresse", dort habe ich eine
    Membervariable CIPAddress -> m_to stehen.Der Aufruf erfolgt
    dann über einen Button, in dem der obige Code steht.

    Als CString klappt es wunderbar. Muß dann nur ein einfaches
    Eingabefeld dafür erstellen. Wie mach ich das mit CIPAddress ?
    Ich vermute diese Zeile

    pHostInfo = ::gethostbyaddr(reinterpret_cast<char *>(&IPAddress),sizeof(unsigned long),AF_INET);
    

    muß dann anders lauten wegen dem beschriebenen Fehler oben, oder ?

    Keinen Plan

    Chris



  • mhh hab mich mit diesem steuerelement noch nicht auseinander gesetzt sorry



  • Schade,

    wenn jemand eine Lösung hat, bitte posten !
    Ich versuch auch mal weiter das zum laufen zu bekommen.

    🙄
    Chris


Anmelden zum Antworten