Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di sky_451
    Registrato dal
    Apr 2003
    Messaggi
    194

    [C] funzione gethostbyname() nelle socket per GNU/linux

    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.
    "There is no dark side of the moon really. Matter of fact it’s all dark."

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Ringrazion Oregon che me lo ha spiegato la prima volta
    codice:
    struct hostent *h = gethostbyname("www.ciao.it");
    struct SockAddr_In SockAddr;
    memcpy((char *)&SockAddr.sin_addr, (char *)h->h_addr_list[0], 4);
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Utente di HTML.it L'avatar di sky_451
    Registrato dal
    Apr 2003
    Messaggi
    194
    Allora ringrazio tutti e due.
    "There is no dark side of the moon really. Matter of fact it’s all dark."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.