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