erledigt



  • Hat sich erledigt - habe endlich den Fehler gefunden - ich sollte s_addr und nicht in_addr (ein mal long int, ein mal struct) vergleichen.

    also falls jemand mal diesen Thread auf der Suche nach einer Lösung aufruft - ip adressen können so verglichen werden:

    if ( cli_addr.sin_addr.s_addr == inet_addr(r_ip.c_str()) ) {...}
    

    Danke an alle

    hallo

    ich versuche gerade zwei IP adressen zu vergleichen - die eine bekomme ich von der accept Funktion ausgefüllt

    /*
     * l_fd - local file descriptor
     * cli_addr - struct sockaddr_in
     */
    socklen_t clilen = sizeof(cli_addr);
    accept(l_fd, (sockaddr*) &cli_addr, &clilen))
    

    die andere Adresse is eine als String gegebene IP Adresse

    std::string ip = "1.1.1.1";
    

    jetzt will ich diese vergleichen

    if ( cli_addr.sin_addr.in_addr == inet_addr(ip.c_str()))
    
    // oder auch
    
    if ( ntohl (cli_addr.sin_addr.in_addr) == ntohl( inet_addr(ip.c_str()))
    

    ich bekomme beide Male folgende Fehlermeldung:

    error: invalid use of ‘in_addr::in_addr’

    Woran liegt es?

    danke


Anmelden zum Antworten