Archivio del aprile 2010
Leggere un file al contrario in C
30 apr
La lettura di un file in C avviene in maniera unidirezionale, dall’inizio alla fine. Per leggere un file al contrario, è necessario utilizzare la funzione di posizionamento fseek:
int fseek ( FILE * stream, long int offset, int origin );
dove stream è un puntatore ad un oggetto FILE, offset è l’offset, in byte, da origin.
origin è un intero che rappresenta la posizione. E’ possibile utilizzare le seguenti tre costanti:
SEEK_SET | Inizio del file |
SEEK_END | Fine del file |
SEEK_CUR | Posizione corrente |
Il valore di ritorno della funzione è 0 se ha avuto successo, un valore non nullo altrimenti.
Host Lookup in Java
27 apr
La creazione di un utility che converte un hostname in un indirizzo IP e viceversa può essere decisamente semplice, utilizzando la classe java.net.InetAddress.
In particolare, il programma accetterà un hostname o un IP come argomento (quale dei due sia stato passato viene deciso con una funzione che sfrutta le espressioni regolari, e quindi le classi Pattern e Matcher) e lo trasformerà di conseguenza.
Echo Server in Java
25 apr
Il codice che segue implementa un semplice Echo Server in Java.
Il programma crea un ServerSocket che resta in attesa di una connessione. Quando riceve una connessione in ingresso, legge i dati in ingresso fino al loro termine o fino a quando non viene incontrato il carattere di newline, ed effettua l’echo.
Il server si limita a ricevere, rispondere e chiudere la connessione, senza rimanere in attesa di ulteriori input.
Rappresentazione di un indirizzo IP in Java
24 apr
In Java, un indirizzo IP (sia IPv4 che IPv6) è rappresentato come un oggetto di classe java.net.InetAddress che, solitamente, contiene sia l’hostname che l’indirizzo IP.
La classe InetAddress non ha costruttori pubblici quindi la creazione di un’istanza di tale classe è affidata a diversi metodi statici:
// determina l'IP dell'indirizzo dell'host specificato static InetAddress getByName(String host) throws UnknownHostException // determina tutti gli IP dell'indirizzo dell'host specificato static InetAddress[] getAllByName(String host) throws UnknownHostException // ricava un InetAddress dall'indirizzo IP specificato static InetAddress getByAddress(byte[] addr) throws UnknownHostException // ricava un InetAddress dal nome dell'host e dall'IP specificato static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException // ritorna l'host locale static InetAddress getLocalHost() throws UnknownHostException
Visualizzare il sorgente di una pagina web in Java
23 apr
La classe java.net.URL definisce il metodo
public final InputStream openStream() throws IOException
che consente di collegarsi alla risorsa indicata dall’oggetto URL, ritornando un java.io.InputStream da cui è possibile leggere i dati.
Tra i dati letti, non compare alcun dato riguardante le informazioni sul protocollo (come ad esempio gli header del protocollo HTTP).
Gestire gli URL in Java
22 apr
In Java, un URL (Uniform Resource Locator) è gestito utilizzando la classe java.net.URL.
Il vantaggio di utilizzare una classe specializzata rispetto ad una semplice stringa è che, in realtà, un URL è composto da più componenti, come ad esempio l’host, la porta, la stringa di query ecc.
Tale classe permette di accedere a questi componenti utilizzando gli appositi metodi getter
Java: la classe ServerSocket
21 apr
La classe ServerSocket, contenuta nel package java.net, è utilizzata per fornire le funzionalità che consentono di creare un server in Java.
I costruttori di questa classe sono:
// crea un socket senza effettuare la bind ServerSocket() // crea un socket ed effettua la bind sulla porta specificata ServerSocket(int port) // crea un socket, effettua la bind sulla porta specificata // e setta il backlog ServerSocket(int port, int backlog) // crea un socket, effettua la bind sulla porta e sull'indirizzo // specificato, e setta il backlog ServerSocket(int port, int backlog, InetAddress bindAddr)
Tutti i costruttori lanciano una IOException se avviene un errore in fase di creazione del socket.
Java: la classe Console
20 apr
La classe Console, contenuta nel package java.io e presente da Java 1.6, definisce i metodi per accedere alla console associata alla JVM, se ce n’è una.
Essa può essere ottenuta mediante il metodo
public static Console console()
della classe System. Nel caso in cui non vi sia una console associata, verrà ritornato null.