Funktion zum Auslesen der IP auslesen



  • Hallo Leutz,
    ich versuche eine Schleife zusammen zubasteln die aus einer geöffneten *.txt Datei,mit einer Menge von verschiedenen Daten, die ganzen IPs rausfiltert.
    Leider habe ich damit meine Probleme kann mir da jemand helfen?

    so schaut meine geöffnete Datei aus...,

    void CDateiDlg::OnButton1() //Datei Lesen 
    { 
    TCHAR str[1000]; 
    CFileDialog m_dlgFile( TRUE ); // TRUE = Datei öffnen,FALSE = Datei speichern 
    if( m_dlgFile.DoModal() == IDOK ) 
    { 
    m_pathname = m_dlgFile.GetPathName(); 
    } 
    CFile datei( m_pathname, CFile::modeRead ); 
    datei.Read( str, sizeof( str ) ); 
    datei.Close(); 
    m_strEdit1 = str; 
    UpdateData( FALSE ); // Variablen ---> Felder 
    }
    

    ... diese Lass ich gerade in einem "Eingabefeld" ausgeben...,



  • Müssten schon ein paar mehr infos sein, hellsehen kann ich nicht...

    Devil



  • hmm *grübel* ok ein Bsp.: Könnte so aus sehen ...

    218.199.124.102
    Hostname : bla
    OS: doof
    
    218.166.124.102
    Hostname : bla
    OS: doof
    
    218.199.14.102
    Hostname : bla
    OS: doof
    
    218.199.124.1
    Hostname : bla
    OS: doof
    

    und nuun möchte ich gerne nunr die IP rausfilternn...



  • ich hatte mir erstmal unter c++ n paar Gedanken dazu gemacht, fpr dasFormat

    123.123.123.123/hostname
    Os: bla

    {
        int ip1, ip2, ip3, ip4;
        // Okay, str enthaelt ein "/"
        pfad = str.substr(pos); // pfad enthaelt nun den Pfadanteil
        // Nun noch pruefen, ob IP Addresse 
        if (4==sscanf(str.c_str(), "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4))
        {
            // Scheint okay zu sein: da sind 4 Zahlen durch Punkte getrennt.
            // Weitere Pruefungen moeglich
            ip = str.substr(0, pos);
         }
    }
    // Wenn wir hier ankommen und sowohl pfad alsauch ip nicht leer sind,
    // entspricht die Zeile dem geforderten Format
    
       printline(ip);
    };{
        int ip1, ip2, ip3, ip4;
        // Okay, str enthaelt ein "/"
        pfad = str.substr(pos); // pfad enthaelt nun den Pfadanteil
        // Nun noch pruefen, ob IP Addresse 
        if (4==sscanf(str.c_str(), "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4))
        {
            // Scheint okay zu sein: da sind 4 Zahlen durch Punkte getrennt.
            // Weitere Pruefungen moeglich
            ip = str.substr(0, pos);
         }
    }
    // Wenn wir hier ankommen und sowohl pfad alsauch ip nicht leer sind,
    // entspricht die Zeile dem geforderten Format
    
       printline(ip);
    };
    

    [ Dieser Beitrag wurde am 25.11.2002 um 20:27 Uhr von uTaNG editiert. ]

    [ Dieser Beitrag wurde am 25.11.2002 um 20:27 Uhr von uTaNG editiert. ]

    [ Dieser Beitrag wurde am 25.11.2002 um 20:28 Uhr von uTaNG editiert. ]



  • Hatte da mal folgendes:

    int CTestDlg::TestString(CString in)
    {
        bool buchstabe=false,zahl=false,ip=false;
        int r=0,ipcount=0;
        CString ip2,rest;
    
        for (int x = 0;x < in.GetLength();x++)
        {
            if( (in.GetAt(x) > 65 && in.GetAt(x) < 90)||(in.GetAt(x) > 97 &&  in.GetAt(x) < 122))
            {
                buchstabe = true;
            }
    
            if( in.GetAt(x) > 48&& in.GetAt(x) < 59)
            {
                zahl = true;
            }
        }
        if (buchstabe == false && zahl == true)
        {
            ip2 = in;
            while (ip2.Find(".") >0 && ipcount <=3)
            {
                rest = ip2.Left(ip2.Find(".")-1);
                if (rest.GetLength() == 3)
                {ipcount ++;}
                ip2 = ip2.Mid(ip2.Find(".") + 1);
            }
    
            if (ip2.GetLength() == 3 && ipcount == 3)
            {
                r = 4;//IP
            }
            else
            {
                r = 2;//Zahl
            }
        }
    
        else
        {
            if (buchstabe == true && zahl == true)
            {
                r = 3;//Beides
            }
            else
            {
                r = 1; //Buchstaben
            }
        }
    
        return r;
    }
    

    Vieleicht hilft das ja...



  • Schreibst du die Dateien selber, ich meine die mit den IP's.

    Wenn ja arbeite lieber mit INI Dateien und nutze GetPrivateProfileString WritePrivateProfileString etc.



  • ne leider beruhen die quell-dateien nicht im *.ini format sonder als.txt bzw. *.log könnt ihr mir da trotzdem helfen?


Anmelden zum Antworten