Salve, posto subito il codice in questione:
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;
}
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?
Grazie.