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.