Il grande successo di Java è dovuto alla semplicità di programmazione, alla possibilità di creare applicazioni multipiattaforma e ad un insieme di librerie che consentono di creare facilmente applicazioni di rete. Combinando infatti gli oggetti dei package java.net e java.io è possibile usufruire ad un alto livello di astrazione, di metodi e classi che ci svincolano dalla conoscenza approfondita delle comunicazioni di rete tra computer. In questa nostra lezione faremo il nostro primo approccio al mondo del networking spiegando come creare un socket per la comunicazione tra client e server.
Un socket ( calzino ) è un’astrazione software progettata per poter utilizzare le API e creare un canale di comunicazione tra due computer sulla rete, all’interno di questo canale facciamo fluire i dati attraverso uno stream. In Java esiste una classe con i suoi metodi che si occupa di tutto questo, il suo nome è Socket presente nel package java.net.
Per creare un Socket ed aprire la connessione ad un computer, possiamo utilizzare direttamente il costruttore nel quale inserire il nome del server e la porta di comunicazione, mentre i metodi principali della classe sono:
- connect – consente di collegarsi ad un server attraverso un SocketAddress, che è una classe astratta che consente la connessione senza protocollo.
- getInetAddress – ritorna l’indirizzo a cui il socket è connesso.
- getLocalAddress – ritorna l’indirizzo locale al quale il socket è collegato.
- getPort – ritorna il numero della porta al quale il socket è connesso.
- getLocalPort – ritorna il numero della porta locale alla quale il socket è connesso.
- getInputStream – ritorna un oggetto di tipo InputStream collegato al socket.
- getOutputStream – ritorna un oggetto di tipo OutputStream collegato al socket.
- close – chiude la connessione del socket
Vediamo ora un esempio nel quale faremo una richiesta a caso al server yahoo.it, ovviamente ci arriverà un errore perché abbiamo inviato una richiesta sbagliata, infatti l’esempio serve solo per mostrare come si effettua una connessione tramite socket in Java:
import java.io.*; import java.net.*; public class Main { public static void main(String[] args) { Socket s = null; InputStream is = null; OutputStream os = null; int c; try { s = new Socket("www.yahoo.it", 80); is = s.getInputStream(); os = s.getOutputStream(); String str = "aaa\n"; byte buf[] = str.getBytes(); os.write(buf); str = ""; while ((c = is.read()) != -1) str += (char)c; System.out.println(str); s.close(); } catch (Exception e) { System.out.println("Errore: " + e.getMessage()); } } }
Con questo è tutto riguardo alla programmazione base in Java, da qui in poi dovrete fare da soli, ma non preoccupatevi, in questo blog troverete sempre esempi di codice semplice ed intuitivo, sempre spiegato nei minimi dettagli, per farvi imparare a programmare in Java.