Controllo dell'ip

di il
1 risposte

Controllo dell'ip

Ciao a tutti stò realizzando una applicazione di tipo client server ...

il problema è il settaggio dell'ip da parte di client e server in maniera tale che il server può impostare genericamente indirizzo e porta su cui è in ascolto e il client deve specificare porta e indirizzo su cui connettersi ...

Se il client inoltre digita un indirizzo sbagliato nella forma non corretta deve dare errore ...

uso indirizzi ip a 12 bit intervallati da 3 punti

es 127.0.0.1
124.034.234.134

1 Risposte

  • Re: Controllo dell'ip

    Potresti utilizzare la funzione gethostbyname, il prototipo della funzione è il seguente:
    struct hostent {
        char    *h_name;        /* official name of host */
        char    **h_aliases;    /* alias list */
        int     h_addrtype;      /* host address type */
        int     h_length;           /* length of address */
        char    **h_addr_list;  /* list of addresses */
    };
    
    struct hostent *gethostbyname(const char *name);
    Alla funzione devi passare una stringa contente un indirizzo ip o il nome di un host (per esempio http://www.google.i), questa capirà da sola se si tratta di un ip o di un nome e nel caso di un nome tenterà di tradurlo in indirizzo ip. Se la funzione viene eseguita senza errori (scritto ip nella forma corretta o riesce a tradurre il nome in ip) ritorna un puntatore alla struttura hostent altrimenti NULL. La struttura hostent contiene alcune informazioni sul computer col l'indirizzo ip passato per parametro (o tradotto dal nome), il campo h_addr_list contiene la lista degli indirizzi ip del computer. Questi ultimi sono scritti nella stessa forma nella quale vanno inseriti nella struttura sockaddr_in, quindi ti basta copiarli nella struttura è sei aposto.

    Un ultima cosa c'è una piccola differenza tra la versione di linux e quella della microsoft di questa funzione. Su un sistema microsoft quando la struttura hostent ritornata non ti serve più la devi deallocare con free(), su linux no. In ogni caso ti consiglio di controllare nella documentazione del tuo compilatore.

    Ciao.
Devi accedere o registrarti per scrivere nel forum
1 risposte