darvina Sat Apr 6 06:29:55 2002 EDT
Modified files:
/phpdoc/it/functions sockets.xml
Log:
Initial translation
Index: phpdoc/it/functions/sockets.xml
diff -u /dev/null phpdoc/it/functions/sockets.xml:1.4
--- /dev/null Sat Apr 6 06:29:55 2002
+++ phpdoc/it/functions/sockets.xml Sat Apr 6 06:29:55 2002
@@ -0,0 +1,1223 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- EN-Revision: 1.34 Maintainer: darvina Status: ready -->
+ <reference id="ref.sockets">
+ <title>Funzioni relative ai Socket</title>
+ <titleabbrev>Sockets</titleabbrev>
+
+ <partintro>
+ &warn.experimental;
+ <simpara>
+ Questa estensione implementa una interfaccia a basso livello
+ verso i socket, fornendo la possibilit� di agire sia come
+ server sia come client.
+ </simpara>
+ <para>
+ Le funzioni relative ai socket qui descritte, sono parte di una estensione
+ di PHP che deve essere abilitata durante la fase di compila tramite
+ l'opzione <option role="configure">--enable-sockets</option> di
+ <command>configure</command>.
+ </para>
+ <para>
+ Per un esempio di una interfaccia generica lato client,
+ vedere <function>fsockopen</function> e
+ <function>pfsockopen</function>.
+ </para>
+ <para>
+ Per l'utilizzo di queste funzioni, � importante ricordare che
+ molte di esse hanno il medesimo nome della loro controparte in C,
+ ma spesso hanno dichiarazioni differenti. Ricordarsi di leggere
+ la descrizione per evitare confusione.
+ </para>
+ <para>
+ Per chi non ha famigliarit� con la programmazione dei socket, pu�
+ trovare utili informazioni nelle pagine del manuale di Unix, ed inoltre
+ sul web si pu� trovare diversi tutorial sulla programmazione
+ dei socket in C, molti dei quali possono essere utilizzati, con
+ lievi modifiche, nella programmazione dei socket in PHP.
+ </para>
+ <para>
+ <example>
+ <title>Esempio di programma con i socket: semplice server TCP/IP</title>
+ <para>
+ Questo esempio mostra un semplice server. Occorre modificare
+ le variabili <varname>address</varname> e <varname>port</varname>
+ per adeguarle ai parametri della macchina su cui sar� eseguito. Ci si pu�
+ connettere al server con un comando simile a <command>telnet 192.168.1.53
+ 10000</command> (dove l'indirizzo e la porta devono essere uguali a quanto
+ indicato nel setup). Qualsiasi lettara sar� digitata, verr� visualizzata sul
+server
+ e sul client. Per disconnettersi digitare 'quit'.
+ </para>
+ <programlisting role="php">
+<![CDATA[
+#!/usr/local/bin/php -q
+<?php
+error_reporting (E_ALL);
+
+/* Si indica allo script di non uscire mentre attende una connessione */
+set_time_limit (0);
+
+/* Abilita lo scarico dell'output cos� si � in grado di vedere cosa passa
+ * non appena arrivano i dati al server. */
+ob_implicit_flush ();
+
+$address = '192.168.1.53';
+$port = 10000;
+
+if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) {
+ echo "socket_create() fallito: motivo: " . socket_strerror ($sock) . "\n";
+}
+
+if (($ret = socket_bind ($sock, $address, $port)) < 0) {
+ echo "socket_bind() fallito: motivo: " . socket_strerror ($ret) . "\n";
+}
+
+if (($ret = socket_listen ($sock, 5)) < 0) {
+ echo "socket_listen() fallito: motivo: " . socket_strerror ($ret) . "\n";
+}
+
+do {
+ if (($msgsock = socket_accept($sock)) < 0) {
+ echo "socket_accept() fallito: motivo: " . socket_strerror ($msgsock) . "\n";
+ break;
+ }
+ /* Invio delle istruzioni */
+ $msg = "\nBenvenuti al server di test in PHP. \n" .
+ "Per uscire, digitare 'quit'. Per chiudere il server digitare 'shutdown'.\n";
+ socket_write($msgsock, $msg, strlen($msg));
+
+ do {
+ if (FALSE === ($buf = socket_read ($msgsock, 2048))) {
+ echo "socket_read() fallito: motivo: " . socket_strerror ($ret) . "\n";
+ break 2;
+ }
+ if (!$buf = trim ($buf)) {
+ continue;
+ }
+ if ($buf == 'quit') {
+ break;
+ }
+ if ($buf == 'shutdown') {
+ socket_close ($msgsock);
+ break 2;
+ }
+ $talkback = "PHP: Testo scritto '$buf'.\n";
+ socket_write ($msgsock, $talkback, strlen ($talkback));
+ echo "$buf\n";
+ } while (true);
+ socket_close ($msgsock);
+} while (true);
+
+socket_close ($sock);
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <para>
+ <example>
+ <title>Esempio di programma con i socket: semplice client TCP/IP</title>
+ <para>
+ In questo esempio sar� illustrato un semplice client HTTP. Questo,
+ molto semplicemente, si collega ad un server, invia una richiesta HEAD,
+ visualizza la risposta ed esce.
+ </para>
+ <programlisting>
+<![CDATA[
+<?php
+error_reporting (E_ALL);
+
+echo "<h2>Connessione TCP/IP </h2>\n";
+
+/* Ottiene la porta per il servizio WWW. */
+$service_port = getservbyname ('www', 'tcp');
+
+/* Ottiene l'indirizzo IP per il server cercato. */
+$address = gethostbyname ('www.php.net');
+
+/* Crea un socket TCP/IP. */
+$socket = socket_create (AF_INET, SOCK_STREAM, 0);
+if ($socket < 0) {
+ echo "socket_create() fallito: motivo: " . socket_strerror ($socket) . "\n";
+} else {
+ echo "OK.\n";
+}
+
+echo "Tentativo di connessione a '$address' sulla porta '$service_port'...";
+$result = socket_connect ($socket, $address, $service_port);
+if ($result < 0) {
+ echo "socket_connect() fallito.\nMotivo: ($result) " . socket_strerror($result) .
+"\n";
+} else {
+ echo "OK.\n";
+}
+
+$in = "HEAD / HTTP/1.0\r\n\r\n";
+$out = '';
+
+echo "Invio HTTP HEAD...";
+socket_write ($socket, $in, strlen ($in));
+echo "OK.\n";
+
+echo "Lettura della risposta:\n\n";
+while ($out = socket_read ($socket, 2048)) {
+ echo $out;
+}
+
+echo "Chiusura del socket...";
+socket_close ($socket);
+echo "OK.\n\n";
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ </partintro>
+
+ <refentry id="function.socket-accept">
+ <refnamediv>
+ <refname>socket_accept</refname>
+ <refpurpose>Accetta una connessione su un socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_accept</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ Dopo la creazione del socket <parameter>socket</parameter> con
+ <function>socket_create</function>, l'assegnazione di un nome con
+ <function>socket_bind</function>, e averlo messo in attesa di connessione
+ con <function>socket_listen</function>, con questa funzione si inizia ad
+accettare
+ le richieste di connessione su quel socket. Una volta che si ha una
+ connessione, la funzione restituisce un nuovo socket che pu� essere
+ usato per la comunicazione. Se vi sono diverse richieste di connessioni pendenti
+ verr� utilizzata la prima. Viceversa se non vi sono richieste in attesa
+ la funzione <function>socket_accept</function> si blocca in
+ attesa di una richiesta. Se il <parameter>socket</parameter> � stato
+ configurato "non-blocking" con
+ <function>socket_set_blocking</function> o con
+ <function>socket_set_nonblock</function>, la funzione restituir� un
+ errore.
+ </para>
+ <para>
+ Il descrittore di socket restituito da
+ <function>socket_accept</function> non pu� essere utilizzato per acquisire
+ nuove connesioni. Per questo scopo occorre
+ continuare ad usare il socket originale, indicato in
+<parameter>socket</parameter>,
+ che rimane aperto.
+ </para>
+ <para>
+ La funzione restituisce un descrittore di socket in caso di esito positivo,
+ in caso di errore si avr� un codice di errore negativo. Questo codice pu�
+ essere passato a <function>socket_strerror</function> per ottenere una
+descrizione
+ dell'errore.
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_bind</function>,
+ <function>socket_connect</function>,
+ <function>socket_listen</function>,
+ <function>socket_create</function>,
+ <function>socket_get_status</function> e
+ <function>socket_strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-bind">
+ <refnamediv>
+ <refname>socket_bind</refname>
+ <refpurpose>Bind di un nome ad un socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_bind</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>string</type><parameter>address</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ La funzione <function>socket_bind</function> esegue il bind del nome passato in
+ <parameter>address</parameter> sul socket indicato da
+ <parameter>socket</parameter>, che deve essere un descrittore valido
+ creato da <function>socket_create</function>.
+ </para>
+ <para>
+ Il parametro <parameter>address</parameter> pu� essere sia
+ un classico indirizzo IP (ad esempio
+ <literal>127.0.0.1</literal>), se il socket appartiene alla famiglia
+ <constant>AF_INET</constant>, sia il percorso di un socket
+ nel dominio Unix, se il socket appartiene alla famiglia
+ <constant>AF_UNIX</constant>.
+ </para>
+ <para>
+ Il parametro <parameter>port</parameter>, si utilizza soltanto
+ con le connessioni tramite un socket di tipo <constant>AF_INET</constant>,
+ ed indica quale porta sul server remoto si debba utilizzare
+ per eseguire la connessione.
+ </para>
+ <para>
+ La funzione restituisce zero se ha successo, oppure un codice di errore
+ negativo su errore. Questo codice pu� essere passato alla funzione
+<function>socket_strerror</function>
+ per ottenere una descrizione dell'errore.
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_connect</function>,
+ <function>socket_listen</function>,
+ <function>socket_create</function>,
+ <function>socket_get_status</function> e
+ <function>socket_strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-close">
+ <refnamediv>
+ <refname>socket_close</refname>
+ <refpurpose>Chiude il descrittore di un socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_close</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ La funzione <function>socket_close</function> chiude il descrittore di file (o
+di socket)
+ indicato nel parametro <parameter>socket</parameter>.
+ </para>
+ <para>
+ Si noti che la funzione <function>socket_close</function> non dovrebbe essere
+applicata
+ ai descrittori di file di PHP creati con <function>fopen</function>,
+ <function>popen</function>, <function>fsockopen</function>, oppure
+ <function>psockopen</function>; ma soltanto con i socket creati
+ dalle funzioni <function>socket_create</function> e
+ <function>socket_accept</function>.
+ </para>
+ <para>
+ La funzione ritorna &true; se ha successo, oppure &false;
+ se si ha un errore (ad esempio,il <parameter>socket</parameter> non � valido).
+ </para>
+ <para>
+ Vedere anche <function>socket_bind</function>,
+<function>socket_listen</function>,
+ <function>socket_create</function>,
+ <function>socket_get_status</function> e
+ <function>socket_strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-connect">
+ <refnamediv>
+ <refname>socket_connect</refname>
+ <refpurpose>Inizia una connessione su un socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_connect</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>string</type><parameter>address</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ Apre una connessione usando il descrittore di socket
+ <parameter>socket</parameter>, il quale deve essere un descrittore
+ di socket valido generato da <function>socket_create</function>.
+ </para>
+ <para>
+ Il parametro <parameter>address</parameter> pu� essere sia
+ un classico indirizzo IP (ad esempio
+ <literal>127.0.0.1</literal>), se il socket appartiene alla famiglia
+ <constant>AF_INET</constant>, sia il percorso di un socket
+ nel dominio Unix, se il socket appartiene alla famiglia
+ <constant>AF_UNIX</constant>.
+ </para>
+ <para>
+ Il parametro <parameter>port</parameter>, utilizzato soltanto
+ con le connessioni tramite un socket di tipo <constant>AF_INET</constant>,
+ indica quale porta sul server remoto si debba utilizzare
+ per eseguire la connessione.
+ </para>
+ <para>
+ La funzione restituisce zero se ha successo, oppure un codice di errore
+ negativo in caso di errore. Questo codice pu� essere passato alla funzione
+<function>socket_strerror</function>
+ per ottenere una descrizione dell'errore.
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_bind</function>,
+ <function>socket_listen</function>,
+ <function>socket_create</function>,
+ <function>socket_get_status</function> e
+ <function>socket_strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-listen">
+ <refnamediv>
+ <refname>socket_listen</refname>
+ <refpurpose>Attende una richiesta di connessione su un socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_listen</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>int</type><parameter>backlog</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ Una volta creato il socket <parameter>socket</parameter> tramite
+ la funzione <function>socket_create</function>, ed eseguito il bind ad un nome
+ con <function>socket_bind</function>, lo si pu� mettere in ascolto di
+ eventuali richieste di connessione. Tramite il parametro
+ <parameter>backlog</parameter> si indica il numero massimo di connessioni
+ in ingresso da tenere nella coda per l'elaborazione.
+ </para>
+ <para>
+ La funzione <function>socket_listen</function> � disponibile solo per i
+ socket di tipo <literal>SOCK_STREAM</literal> o
+ <literal>SOCK_SEQPACKET</literal>.
+ </para>
+ <para>
+ La funzione restituisce zero se ha successo, oppure un codice di errore
+ negativo in caso di errore. Questo codice pu� essere passato alla funzione
+<function>socket_strerror</function>
+ per ottenere una descrizione dell'errore.
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_accept</function>,
+ <function>socket_bind</function>,
+ <function>socket_connect</function>,
+ <function>socket_create</function>,
+ <function>socket_get_status</function> e
+ <function>socket_strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-read">
+ <refnamediv>
+ <refname>socket_read</refname>
+ <refpurpose>Legge da un socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>string</type><methodname>socket_read</methodname>
+
+<methodparam><type>resource</type><parameter>socket_des</parameter></methodparam>
+ <methodparam><type>int</type><parameter>length</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>type</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ La funzione <function>socket_read</function> legge un numero di byte,
+ indicati da <parameter>length</parameter>, da un socket
+<parameter>socket_des</parameter>
+ creato dalla funzione <function>socket_accept</function>.
+ In alternativa si possono usare i caratteri \n, \t o \0 per indicare
+ la fine della lettura. La funzione restituisce i dati oppure FALSE
+ se <function>socket_read</function> fallisce.
+ </para>
+ <para>
+ Il parametro opzionale <parameter>type</parameter> pu� assumere i seguenti
+valori:
+ <itemizedlist>
+ <listitem>
+ <simpara>
+ PHP_BINARY_READ - usa la funzione di sistema <function>socket_read</function>
+ (Default in PHP >= 4.1.0)
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ PHP_NORMAL_READ - ferma la lettura in presenza di \n oppure \r. (Default in
+PHP <= 4.0.6)
+ </simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_accept</function>,
+ <function>socket_bind</function>,
+ <function>socket_connect</function>,
+ <function>socket_listen</function>,
+ <function>socket_strerror</function>,
+ <function>socket_get_status</function> e
+ <function>socket_write</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-create">
+ <refnamediv>
+ <refname>socket_create</refname>
+ <refpurpose>Crea un socket (punto terminale di una comunicazione).</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>resource</type><methodname>socket_create</methodname>
+ <methodparam><type>int</type><parameter>domain</parameter></methodparam>
+ <methodparam><type>int</type><parameter>type</parameter></methodparam>
+ <methodparam><type>int</type><parameter>protocol</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ La funzione crea un punto terminale di una comunicazione (un socket)
+ e restituisce un descrittore del socket.
+ </para>
+ <para>
+ Il parametro <parameter>domain</parameter> indica il
+ dominio. Attualmente i valori ammessi sono <constant>AF_INET</constant>
+ e <constant>AF_UNIX</constant>.
+ </para>
+ <para>
+ Il parametro <parameter>type</parameter> indica il tipo di socket.
+ I tipi ammessi sono <constant>SOCK_STREAM</constant>,
+ <constant>SOCK_DGRAM</constant>,
+ <constant>SOCK_SEQPACKET</constant>,
+ <constant>SOCK_RAW</constant>, <constant>SOCK_RDM</constant> oppure
+ <constant>SOCK_PACKET</constant>.
+ </para>
+ <para>
+ Il parametro <parameter>protocol</parameter> indica il protocollo.
+ </para>
+ <para>
+ La funzione restituisce un descrittore di socket se ha successo, oppure un
+ codice di errore negativo in caso di errore. Questo codice pu� essere
+ passato alla funzione <function>socket_strerror</function>
+ per ottenere una descrizione dell'errore.
+ </para>
+ <para>
+ Per maggiori dettagli sull'utilizzo di <function>socket_create</function>,
+ e sul significato dei vari parametri si pu� consultare il
+ man di Unix alle pagine socket (2).
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_accept</function>,
+ <function>socket_bind</function>,
+ <function>socket_connect</function>,
+ <function>socket_listen</function>,
+ <function>socket_strerror</function> e
+ <function>socket_get_status</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-strerror">
+ <refnamediv>
+ <refname>socket_strerror</refname>
+ <refpurpose>Restituisce una stringa con la descrizione dell'errore.</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>string</type><methodname>socket_strerror</methodname>
+ <methodparam><type>int</type><parameter>errno</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ La funzione <function>socket_strerror</function> utilizza come proprio
+ parametro <parameter>errno</parameter> il valore di ritorno di una
+ funzione dei socket, e restituisce la corrispondente descrizione.
+ E' utile potere spiegare cosa � accaduto quando qualcosa
+ non funziona; ad esempio, invece di dovere cercare in tutto il
+ sistema un file che contenga la spiegazione di '-111', si pu� semplicemente
+ passare il valore a <function>socket_strerror</function>, e ottenere la
+ spiegazione di ci� che � accaduto.
+ </para>
+ <para>
+ <example>
+ <title>Esempio di uso di <function>socket_strerror</function></title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+if (($socket = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) {
+ echo "socket_create() fallito: motivo: " . socket_strerror ($socket) . "\n";
+}
+
+if (($ret = socket_bind ($socket, '127.0.0.1', 80)) < 0) {
+ echo "socket_bind() fallito: motivo: " . socket_strerror ($ret) . "\n";
+}
+?>
+]]>
+ </programlisting>
+ <para>
+ Dall'esempio precedente (se non viene eseguito con i
+ privilegi di root) ci si aspetta il seguente messaggio:
+ <screen>
+ socket_bind() fallito: motivo: Permission denied
+ </screen>
+ </para>
+ </example>
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_accept</function>,
+ <function>socket_bind</function>,
+ <function>socket_connect</function>,
+ <function>socket_listen</function>,
+ <function>socket_create</function> e
+ <function>socket_get_status</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-write">
+ <refnamediv>
+ <refname>socket_write</refname>
+ <refpurpose>Scrive su un socket.</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_write</methodname>
+
+<methodparam><type>resource</type><parameter>socket_des</parameter></methodparam>
+ <methodparam><type>string</type><parameter>&buffer</parameter></methodparam>
+ <methodparam><type>int</type><parameter>length</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ La funzione <function>socket_write</function> scrive sul socket
+ <parameter>socket_des</parameter> un numero di byte indicato da
+ <parameter>length</parameter> tratti dal campo
+ <parameter>&buffer</parameter>.
+ </para>
+ <para>
+ Vedere anche
+ <function>socket_accept</function>,
+ <function>socket_bind</function>,
+ <function>socket_connect</function>,
+ <function>socket_listen</function>,
+ <function>socket_read</function>,
+ <function>socket_strerror</function> e
+ <function>socket_get_status</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-fd-alloc">
+ <refnamediv>
+ <refname>socket_fd_alloc</refname>
+ <refpurpose>Alloca un nuovo set di descrittori di file </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>resource</type><methodname>socket_fd_alloc</methodname>
+ <void/>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-fd-free">
+ <refnamediv>
+ <refname>socket_fd_free</refname>
+ <refpurpose>Dealloca il set di descrittori di file </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_fd_free</methodname>
+ <methodparam><type>resource</type><parameter>set</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-fd-set">
+ <refnamediv>
+ <refname>socket_fd_set</refname>
+ <refpurpose>Aggiunge uno o pi� descrittori di file ad un set</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_fd_set</methodname>
+ <methodparam><type>resource</type><parameter>set</parameter></methodparam>
+ <methodparam><type>mixed</type><parameter>socket</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-fd-clear">
+ <refnamediv>
+ <refname>socket_fd_clear</refname>
+ <refpurpose>Cancella uno o pi� descrittori di file da un set</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_fd_clear</methodname>
+ <methodparam><type>resource</type><parameter>set</parameter></methodparam>
+ <methodparam><type>mixed</type><parameter>socket</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-fd-isset">
+ <refnamediv>
+ <refname>socket_fd_isset</refname>
+ <refpurpose>Verifica se il descrittore di file � presente in un dato set di
+descrittori di file</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_fd_isset</methodname>
+ <methodparam><type>resource</type><parameter>set</parameter></methodparam>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-fd-zero">
+ <refnamediv>
+ <refname>socket_fd_zero</refname>
+ <refpurpose>Cancella il set di descrittori di file</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_fd_zero</methodname>
+ <methodparam><type>resource</type><parameter>set</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-select">
+ <refnamediv>
+ <refname>socket_select</refname>
+ <refpurpose>Esegue la system call select() su un set con timeout indicato da
+tv_sec ed tv_usec</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_select</methodname>
+ <methodparam><type>resource</type><parameter>read_fd</parameter></methodparam>
+ <methodparam><type>resource</type><parameter>write_fd</parameter></methodparam>
+ <methodparam><type>resource</type><parameter>except_fd</parameter></methodparam>
+ <methodparam><type>int</type><parameter>tv_sec</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>tv_usec</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-create-listen">
+ <refnamediv>
+ <refname>socket_create_listen</refname>
+ <refpurpose>Apre un socket per accettare connessioni su una porta</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>resource</type><methodname>socket_create_listen</methodname>
+ <methodparam><type>int</type><parameter>port</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>backlog</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-set-nonblock">
+ <refnamediv>
+ <refname>socket_set_nonblock</refname>
+ <refpurpose>Attiva la modalit� "nonblocking" per il descrittore di file
+fd</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_set_nonblock</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-getsockname">
+ <refnamediv>
+ <refname>socket_getsockname</refname>
+ <refpurpose>Dato un fd, memorizza la stringa rappresentante sa.sin_addr ed il
+valore di sa.sin_port in addr e port, descrivendo il lato locale di un
+socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_getsockname</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>string</type><parameter>&addr</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>&port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-getpeername">
+ <refnamediv>
+ <refname>socket_getpeername</refname>
+ <refpurpose>Dato un fd, memorizza la stringa rappresentante sa.sin_addr ed il
+valore di sa.sin_port in addr e port, descrivendo il lato remoto di un
+socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_getpeername</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>string</type><parameter>&addr</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>&port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-iovec-alloc">
+ <refnamediv>
+ <refname>socket_iovec_alloc</refname>
+ <refpurpose>...]) Costruice una struttura 'struct iovec' da utilizzare con
+sendmsg, recvmsg, writev, e readv </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>resource</type><methodname>socket_iovec_alloc</methodname>
+ <methodparam><type>int</type><parameter>num_vectors</parameter></methodparam>
+ <methodparam choice="opt"><type>int</type><parameter/></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-iovec-fetch">
+ <refnamediv>
+ <refname>socket_iovec_fetch</refname>
+ <refpurpose>Restituisce i dati contenuti nella struttura iovec specificata da
+iovec_id[iovec_position] </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>string</type><methodname>socket_iovec_fetch</methodname>
+ <methodparam><type>resource</type><parameter>iovec</parameter></methodparam>
+ <methodparam><type>int</type><parameter>iovec_position</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-iovec-set">
+ <refnamediv>
+ <refname>socket_iovec_set</refname>
+ <refpurpose>Valorizza i dati contenuti in iovec_id[iovec_position] con new_val
+</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_iovec_set</methodname>
+ <methodparam><type>resource</type><parameter>iovec</parameter></methodparam>
+ <methodparam><type>int</type><parameter>iovec_position</parameter></methodparam>
+ <methodparam><type>string</type><parameter>new_val</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-iovec-add">
+ <refnamediv>
+ <refname>socket_iovec_add</refname>
+ <refpurpose>Aggiunge un nuovo vettore all'array ricevuti o inviati</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_iovec_add</methodname>
+ <methodparam><type>resource</type><parameter>iovec</parameter></methodparam>
+ <methodparam><type>int</type><parameter>iov_len</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-iovec-delete">
+ <refnamediv>
+ <refname>socket_iovec_delete</refname>
+ <refpurpose>Cancella un vettore da un array di vettori </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_iovec_delete</methodname>
+ <methodparam><type>resource</type><parameter>iovec</parameter></methodparam>
+ <methodparam><type>int</type><parameter>iov_pos</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-iovec-free">
+ <refnamediv>
+ <refname>socket_iovec_free</refname>
+ <refpurpose>Libera la strutture iovec indicata da iovec_id </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_iovec_free</methodname>
+ <methodparam><type>resource</type><parameter>iovec</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-readv">
+ <refnamediv>
+ <refname>socket_readv</refname>
+ <refpurpose> Legge da un fd, utilizzando un array invia/ricevi definito da
+iovec_id </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_readv</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>resource</type><parameter>iovec_id</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-writev">
+ <refnamediv>
+ <refname>socket_writev</refname>
+ <refpurpose>Scrive su un descrittore di file, fd, usando un array invia/ricevi
+definito da iovec_id </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_writev</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>resource</type><parameter>iovec_id</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-recv">
+ <refnamediv>
+ <refname>socket_recv</refname>
+ <refpurpose>Riceve i dati da un socket collegato </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>string</type><methodname>socket_recv</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>int</type><parameter>len</parameter></methodparam>
+ <methodparam><type>int</type><parameter>flags</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-send">
+ <refnamediv>
+ <refname>socket_send</refname>
+ <refpurpose>Invia i dati ad un socket collegato </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_send</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>string</type><parameter>buf</parameter></methodparam>
+ <methodparam><type>int</type><parameter>len</parameter></methodparam>
+ <methodparam><type>int</type><parameter>flags</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-recvfrom">
+ <refnamediv>
+ <refname>socket_recvfrom</refname>
+ <refpurpose>Riceve i dati da un socket, che sia connesso o meno </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_recvfrom</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>string</type><parameter>&buf</parameter></methodparam>
+ <methodparam><type>int</type><parameter>len</parameter></methodparam>
+ <methodparam><type>int</type><parameter>flags</parameter></methodparam>
+ <methodparam><type>string</type><parameter>&name</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>&port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-sendto">
+ <refnamediv>
+ <refname>socket_sendto</refname>
+ <refpurpose>Invia un messaggio ad un socket, a prescindere che sia connesso o
+meno </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_sendto</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>string</type><parameter>buf</parameter></methodparam>
+ <methodparam><type>int</type><parameter>len</parameter></methodparam>
+ <methodparam><type>int</type><parameter>flags</parameter></methodparam>
+ <methodparam><type>string</type><parameter>addr</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-recvmsg">
+ <refnamediv>
+ <refname>socket_recvmsg</refname>
+ <refpurpose>Funzione usata per ricevere messaggi da un socket, a prescindere che
+sia orientato alla connessione o meno </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_recvmsg</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>resource</type><parameter>iovec</parameter></methodparam>
+ <methodparam><type>array</type><parameter>&control</parameter></methodparam>
+
+<methodparam><type>int</type><parameter>&controllen</parameter></methodparam>
+ <methodparam><type>int</type><parameter>&flags</parameter></methodparam>
+ <methodparam><type>string</type><parameter>&addr</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>&port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-sendmsg">
+ <refnamediv>
+ <refname>socket_sendmsg</refname>
+ <refpurpose>Invia un messaggio ad un socket, a prescindere che sia orientato alla
+connessione o meno </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_sendmsg</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>resource</type><parameter>iovec</parameter></methodparam>
+ <methodparam><type>int</type><parameter>flags</parameter></methodparam>
+ <methodparam><type>string</type><parameter>addr</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>port</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-getopt">
+ <refnamediv>
+ <refname>socket_getopt</refname>
+ <refpurpose>Ottiene le opzioni per un socket </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>mixed</type><methodname>socket_getopt</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>int</type><parameter>level</parameter></methodparam>
+ <methodparam><type>int</type><parameter>optname</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-setopt">
+ <refnamediv>
+ <refname>socket_setopt</refname>
+ <refpurpose>|array optval) Valorizza le opzioni per un socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_setopt</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam><type>int</type><parameter>level</parameter></methodparam>
+ <methodparam><type>int</type><parameter>optname</parameter></methodparam>
+ <methodparam><type>int</type><parameter/></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-create-pair">
+ <refnamediv>
+ <refname>socket_create_pair</refname>
+ <refpurpose>Crea una coppia di socket non distinguibili e li memorizza in fd.
+</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_create_pair</methodname>
+ <methodparam><type>int</type><parameter>domain</parameter></methodparam>
+ <methodparam><type>int</type><parameter>type</parameter></methodparam>
+ <methodparam><type>int</type><parameter>protocol</parameter></methodparam>
+ <methodparam><type>array</type><parameter>&fd</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-shutdown">
+ <refnamediv>
+ <refname>socket_shutdown</refname>
+ <refpurpose>Chiude un socket in ricezione, in invio o in entrambi i sensi.
+</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>bool</type><methodname>socket_shutdown</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>how</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket-last-error">
+ <refnamediv>
+ <refname>socket_last_error</refname>
+ <refpurpose>Restituisce/pulisce l'ultimo errore su un socket. </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descrizione</title>
+ <methodsynopsis>
+ <type>int</type><methodname>socket_last_error</methodname>
+ <methodparam><type>resource</type><parameter>socket</parameter></methodparam>
+ </methodsynopsis>
+ &warn.experimental.func;
+ <para>
+ &warn.undocumented.func;
+ </para>
+ </refsect1>
+ </refentry>
+
+ </reference>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"../../manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
+