Originariamente inviato da MItaly
Hai letto la manpage di gethostbyaddr? L'ultimo parametro di gethostbyaddr dev'essere AF_INET per indirizzi IPv4. Per questo probabilmente gethostbyaddr ti restituisce NULL (a segnalare un errore) e di conseguenza memcpy va in segfault.
Cioè devo mettere "AF_INET" al posto di "0"? non sto capendo..
Scrivendo così:
codice:
unsigned long ip = inet_addr("127.0.0.1");
struct hostent *host = gethostbyaddr((char *)&ip,4,AF_INET);
memcpy((char *)&echoServAddr.sin_addr, (char *)host->h_addr_list[0], 4);
char* canonical_name = host->h_name;
printf("Mi sto collegando all'ip: %d ovvero a: %s\n\n",ip, canonical_name);
La printf mi stampa
codice:
Mi sto collegando all'ip: 16777343 ovvero a: ereg.adobe.com
Forse essendo un long non devo mettere %d? e che cappero centra sto sito di adobe? La cosa strana è che al server risulta collegato, a dirla tutta anche se non assegno nessun ip si collega comunque al server, forse lo prende come indirizzo di default localhost? mbhoc.