© Marco Olivo <me@olivo.net>, luglio 2001
SOCKETS
Il PHP fornisce il supporto per le sockets TCP e di dominio Unix. Tratteremo qui il primo tipo, essendo maggiormente utile.
Tramite le sockets, come il lettore di questa guida saprà, è possibile instaurare una connessione ad un host remoto tramite la rete. Le sockets TCP in particolare garantiscono la correttezza dello stream di dati, eliminando problemi derivanti da duplicati e pacchetti persi.
Tramite il PHP risulta pertanto facile realizzare un client di un qualunque servizio TCP di rete che si collega ai vari hosts ed esegue alcune procedure. In rete si trovano migliaia di esempi, uno dei quali è quello di controllare la correttezza dell'indirizzo email inserito dall'utente.
Un modo molto semplice per capire come funzionano le sockets risulta quello di creare un piccolo client HTTP che richiede una pagina ad un host e la mostra a video. Per far ciò sarebbe possibile, come abbiamo già visto, utilizzare la funzione fopen() con il nome dell'URL da recuperare ma andremo qui ad illustrare l'altro approccio possibile basato su sockets, decisamente più flessibile. Il codice è ben commentato e non necessita pertanto di ulteriori spiegazioni. L'esempio è stato recuperato dal "PHP manual" e leggermente modificato:
<?PHP
/* apre una connessione verso www.php.net, porta 80 */
$fp = fsockopen("www.php.net", 80);
/* se $fp non e' un file descriptor valido esce */
if(!$fp) {
exit();
}
else {
/* scrive sulla socket la richiesta HTTP (vedi RFC relativa) */
fputs($fp,"GET / HTTP/1.0\n\n");
/* legge ora i dati indietro dalla socket fintantoche' non e' finito lo stream di dati */
while(!feof($fp)) {
/* scrive in output cio' che legge mano a mano che lo fa */
echo fgets($fp, 128);
}
fclose($fp);
}
?>