Socket (reti)Un socket, in informatica, indica un'astrazione software progettata per utilizzare delle API standard e condivise per la trasmissione e la ricezione di dati attraverso una rete oppure come meccanismo di IPC. È il punto in cui il codice applicativo di un processo accede al canale di comunicazione per mezzo di una porta, ottenendo una comunicazione tra processi che lavorano su due macchine fisicamente separate. Dal punto di vista di un programmatore un socket è un particolare oggetto sul quale leggere e scrivere i dati da trasmettere o ricevere. DescrizioneI socket sono stati introdotti nel 1983 in BSD e poi sono stati ripresi da praticamente tutti gli altri sistemi operativi. Per questo motivo solitamente le funzioni di programmazione dei socket vengono chiamate Berkeley socket API. Essi permettono di instaurare le varie comunicazioni all'interno della rete, utilizzando la pila TCP/IP. Essi sono composti principalmente da due parti:
Questa combinazione permette di distinguere in maniera univoca le singole richieste all'interno della rete.[1] DominiI socket che utilizzano i medesimi protocolli vengono racchiusi all'interno di una stessa famiglia, chiamata dominio. Esistono principalmente due tipologie di domini:
Tipi di socketI socket si classificano principalmente in tre categorie, ciascuna caratterizzata da una propria modalità di comunicazione.
A sua volta esistono due tipi di socket su IP:
Socket in JavaI socket possono essere implementati tramite vari linguaggi di programmazione. In Java, ad esempio si hanno a disposizione classi già predefinite che permettono la realizzazione del socket sia della macchina client, sia della macchina server. Datagram socketPer realizzare un socket di tipo datagram, si devono sviluppare le seguenti istruzioni:
Nella programmazione in Java si utilizza la classe Java DatagramSocket, basata sul protocollo UDP, la quale possiede i seguenti metodi principali: //creazione del socket
DatagramSocket Socket1 = new DatagramSocket();
//invio del pacchetto
Socket1.send(pack);
//ricezione del pacchetto
dato = DatagramUtility.getContent(pack);
Stream socketIn questa tipologia di connessione è il client che si occupa di invocare il costruttore del socket, specificando l'indirizzo e la porta dove risiede il processo server. Gli stream socket, a differenza dei datagram socket, utilizzano due metodi differenti per inizializzare il socket client e il socket server.[3] //creazione socket client
Socket socketClient = new Socket(ip, porta);
//creazione socket server
ServerSocket socketServer = new ServerSocket(porta);
Note
Bibliografia
Voci correlateAltri progetti
Collegamenti esterni
|
Portal di Ensiklopedia Dunia