[Avanti]  [Indietro]  [Su]  

14.4.3 Le funzioni inet_aton, inet_addr e inet_ntoa

Un secondo insieme di funzioni di manipolazione serve per passare dal formato binario usato nelle strutture degli indirizzi alla rappresentazione simbolica dei numeri IP che si usa normalmente.

Le prime tre funzioni di manipolazione riguardano la conversione degli indirizzi IPv4 da una stringa in cui il numero di IP è espresso secondo la cosiddetta notazione dotted-decimal, (cioè nella forma 192.168.0.1) al formato binario (direttamente in network order) e viceversa; in questo caso si usa la lettera a come mnemonico per indicare la stringa. Dette funzioni sono inet_addr, inet_aton e inet_ntoa, ed i rispettivi prototipi sono:

Tutte queste le funzioni non generano codice di errore.

La prima funzione, inet_addr, restituisce l'indirizzo a 32 bit in network order (del tipo in_addr_t) a partire dalla stringa passata nell'argomento strptr. In caso di errore (quando la stringa non esprime un indirizzo valido) restituisce invece il valore INADDR_NONE che tipicamente sono trentadue bit a uno. Questo però comporta che la stringa 255.255.255.255, che pure è un indirizzo valido, non può essere usata con questa funzione; per questo motivo essa è generalmente deprecata in favore di inet_aton.

La funzione inet_aton converte la stringa puntata da src nell'indirizzo binario che viene memorizzato nell'opportuna struttura in_addr (si veda fig. 14.2) situata all'indirizzo dato dall'argomento dest (è espressa in questa forma in modo da poterla usare direttamente con il puntatore usato per passare la struttura degli indirizzi). La funzione restituisce 0 in caso di successo e 1 in caso di fallimento. Se usata con dest inizializzato a NULL effettua la validazione dell'indirizzo.

L'ultima funzione, inet_ntoa, converte il valore a 32 bit dell'indirizzo (espresso in network order) restituendo il puntatore alla stringa che contiene l'espressione in formato dotted decimal. Si deve tenere presente che la stringa risiede in memoria statica, per cui questa funzione non è rientrante.


[Avanti]  [Indietro]  [Su]  
© 2000-2003 Simone Piccardi
Pubblicazione web curata da Mirko Maischberger