Salve, posto subito il codice in questione:
Ora, il problema è questo: dopo che ho ottenuto il valore per host attraverso la gethostbyname() non so come andare a settare il campo sin_addr della struct sockaddr_in. Qualcuno può darmi una mano?codice:int main(int argc, char *argv[]) { /* Variabili */ struct sockaddr_in Serv; char remoteIpAddress[30] = "137.204.72.5"; short int remotePortNumber = 20000; int socketfd, ris; struct hostent * host; char * stringa; /* creo la socket per il client */ if((socketfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("Errore nella creazione della soccket"); exit(1); } if(argc > 1) { /* risoluzione indirizzo tramite il DNS */ if((host = gethostbyname(argv[1])) == NULL) { printf("Errore nella risoluzione del nome del dominio\n"); exit(1); } /* setto sin_addr per l'host remoto */ } else { if((Serv.sin_addr.s_addr = inet_addr(remoteIpAddress))== INADDR_NONE) { printf("Errore nella inet_addr\n"); exit(1); } } /* setto la struct soccaddr_in per l'host remoto (n.b. il campo sin_addr è già settato) */ memset(&Serv, 0, sizeof(Serv)); Serv.sin_family = AF_INET; Serv.sin_port = htons(remotePortNumber); /* richiesta connessione */ if((ris = connect(socketfd, (struct sockaddr*) &Serv, sizeof(Serv))) == -1) { perror("Errore durante la connessione"); exit(1); } /* chiusura */ if((close(socketfd)) == -1) { perror("Errore durante la chiusura della socket"); exit(1); } return 0; }
Grazie.

Rispondi quotando