dal 2015 - visita n. 4499
php socket parte 3
php socket parte 3

 

UDP socket

Nelle sezioni precedenti abbiamo imparato a scrivere in php dei semplici server e client con socket TCP. Adesso faremo la stessa cosa utilizzando i socket UDP.

I socket UDP sono molto più semplici da utilizzare perchè funzionano senza connessione. Un server UDP ha solo un socket che resta in attesa di ricevere dei dati ed un socket client che può inviare dei dati senza connessione.


Schema grafico di una comunicazione UDP

In questo schema sono rappresentate le semplici operazioni alla pari, che un elemento Server ed un elemento Client compiono per inviare ed intercettare dei messaggi con il più semplice protocollo UDP, che non prevede la fase della connessione.


La differenza fondamentale rispetto agli esempi precedenti la troviamo nella creazione del socket, eseguita sempre con la funzione socket_create, ma con qualche variazione nei parametri passati. Per maggior chiarezza esaminiamola nei dettagli:

$sock = socket_create(AF_INET, SOCK_DGRAM, 0);

Il codice precedente creerà un socket con le seguenti proprietà:


Socket server UDP

Ecco un semplice esempio di socket server UDP sulla porta 6000 di localhost.

Esecuzione dello script

Dopo aver salvato il codice precedente nella cartella public_html dandogli il nome udpserver.php, lo possiamo mandare in esecuzione direttamente dalla riga di comando di un terminale:

$ php ~/public_html/udpserver.php

ottenendo in risposta:

Socket creato correttamente. 
Bind effettuato con successo. 
In attesa dei dati ... 

Questo server UDP è in grado di gestire più client in quanto non utilizza una rigida connessione e risponde semplicemente a chi è in ingresso.


Socket client UDP

Mentre il nostro server UDP sta funzionando benissimo sul primo terminale è arrivato il momento di preparare il codice del programma client per effettuare una comunicazione da un secondo terminale.


Il client appena codificato richiede all'utente di inserire un qualche messaggio da inviare al server. Quindi rimane in attesa della risposta del server e la visualizza.


Esecuzione dello script

Dopo aver salvato il codice precedente nella cartella public_html dandogli il nome udpclient.php, lo possiamo mandare in esecuzione direttamente dalla riga di comando di un secondo terminale:

$ php ~/public_html/udpclient.php

ottenendo in risposta:

Socket creato correttamente. 
Digita il messaggio da inviare: Ciao a tutti
Risposta: OK ... Ciao a tutti
Digita il messaggio da inviare:
.......

Nota
Forse è il caso di ricordare che l'attività rimasta in loop nei 2 terminali server e client può essere interrotta con Ctrl-C.



Conclusioni

In questi brevissimi appunti dedicati alla comunicazione UDP abbiamo visto come realizzare in PHP le basi minime per costruire un server ed un client UDP. I socket UDP sono utilizzati in tutti quei tipi di comunicazione di rete in cui, per una serie di motivi, l'affidabilità, intesa secondo l'accezione delle reti, non è molto importante.

Gli esempi sopra riportati sono molto semplici e avrebbero bisogno di tante modifiche per renderli utili ad un qualche uso pratico, ma possono costituire il punto di partenza per le proprie sperimentazioni.


Punto della situazione

In questa sezione abbiamo imparato come:


















Menù
Introduzione
Ambiente di sviluppo
intro php-01
tag e commenti php-02
variabili e tipi php-03
operatori php-04
php IF esercizi
php FOR esercizi
php objects intro
php objects parte 1
php objects parte 2
php objects parte 3
php objects parte 4
php objects parte 5
CLIL
php socket intro
php socket parte 1
php socket parte 2
php socket parte 3
php socket parte 4
php socket parte 5
php socket parte 6
php socket extra
linux netcat


MiniGuida PHP
Guida Ufficiale PHP (en)
Form Base
Flat DataBase
Pagine Protette
mySQL



L'ordine è il piacere della ragione; ma il disordine è la delizia dell'immaginazione.
Paul Claudel

Valid CSS!
pagina generata in 0.004 secondi