Successivo: Profilare, Precedente: I/O bidirezionale, Su: Funzionalità avanzate [Contenuti][Indice]
gawk
per la programmazione di rete
EMRED
:
A host is a host from coast to coast,
and nobody talks to a host that’s close,
unless the host that isn’t close
is busy, hung, or dead.
EMRED
:
Un computer è un computer lontano o vicino,
e nessuno parla con un computer vicino,
a meno che il computer lontano
sia occupato, fuori linea, o spento.
Oltre a poter aprire una pipeline bidirezionale verso un coprocesso sullo stesso sistema (vedi la sezione Comunicazioni bidirezionali con un altro processo), è possibile attivare una connessione bidirezionale verso un altro processo o verso un altro sistema attraverso una connessione di rete IP.
Si può pensare a questo semplicemente come a una pipeline bidirezionale
molto lunga verso un coprocesso.
Il modo in cui gawk
stabilisce quando usare una rete TCP/IP è
mediante il riconoscimento di speciali nomi-file che iniziano con
‘/inet/’, con ‘/inet4/’ o con ‘/inet6/’.
La sintassi completa del nome-file speciale è /tipo-rete/protocollo/porta-locale/host-remoto/porta-remota. I componenti sono:
Specifica il tipo di connessione a internet da stabilire. Si usa ‘/inet4/’ per usare solo IPv4, e ‘/inet6/’ per usare solo IPv6. Il semplice ‘/inet/’ (che usualmente è l’unica opzione) usa il tipo di default del sistema, quasi certamente IPv4.
Il protocollo da usare sull’IP. Questo dev’essere o ‘tcp’ o ‘udp’, per una connessione IP rispettivamente TCP o UDP. TCP dovrebbe venir usato per la maggior parte delle applicazioni.
Il numero di porta TCP o UDP da usare. Si usa un numero di porta di valore
‘0’ quando si vuole che sia il sistema a scegliere una porta.
Questo è quel che si dovrebbe fare quando si scrive un’applicazione
cliente TCP o UDP.
Si può usare anche un nome di un servizio noto, come ‘smtp’
o ‘http’, nel qual caso gawk
tenta di determinare
il numero di porta predefinito usando la funzione C getaddrinfo()
.
L’indirizzo IP o il nome di dominio completamente qualificato dell’host internet al quale ci si vuol connettere.
Il numero di porta TCP o UDP da usare sul particolare host remoto. Anche in questo caso, si usi ‘0’ se non ci sono preferenze, o alternativamente, un nome di servizio comunemente noto.
NOTA: Un insuccesso nell’apertura di un socket bidirezionale darà luogo alla segnalazione di un errore non fatale al codice chiamante. Il valore di
ERRNO
indica l’errore (vedi la sezione Variabili predefinite con cuiawk
fornisce informazioni).
Si consideri il seguente esempio molto semplice:
BEGIN { Servizio = "/inet/tcp/0/localhost/daytime" Servizio |& getline print $0 close(Servizio) }
Questo programma legge la data e l’ora corrente dal server daytime
TCP del sistema locale.
Stampa poi il risultato e chiude la connessione.
Poiché questo tema è molto ampio, l’uso di gawk
per
la programmazione TCP/IP viene documentata separatamente.
Si veda
TCP/IP Internetworking with gawk
,
che fa parte della distribuzione gawk
,
per una introduzione e trattazione molto più completa e con molti
esempi.
NOTA:
gawk
può aprire solo socket diretti. Al momento non c’è alcun modo per accedere ai servizi disponibili su Secure Socket Layer (SSL); questo comprende qualsiasi servizio web il cui URL inizia con ‘https://’.
Successivo: Profilare, Precedente: I/O bidirezionale, Su: Funzionalità avanzate [Contenuti][Indice]