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 &gt;= 4.1.0)
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        PHP_NORMAL_READ - ferma la lettura in presenza di \n oppure \r. (Default in 
+PHP &lt;= 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>&amp;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>&amp;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>&amp;addr</parameter></methodparam>
+      <methodparam 
+choice="opt"><type>int</type><parameter>&amp;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>&amp;addr</parameter></methodparam>
+      <methodparam 
+choice="opt"><type>int</type><parameter>&amp;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>&amp;buf</parameter></methodparam>
+      <methodparam><type>int</type><parameter>len</parameter></methodparam>
+      <methodparam><type>int</type><parameter>flags</parameter></methodparam>
+      <methodparam><type>string</type><parameter>&amp;name</parameter></methodparam>
+      <methodparam 
+choice="opt"><type>int</type><parameter>&amp;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>&amp;control</parameter></methodparam>
+      
+<methodparam><type>int</type><parameter>&amp;controllen</parameter></methodparam>
+      <methodparam><type>int</type><parameter>&amp;flags</parameter></methodparam>
+      <methodparam><type>string</type><parameter>&amp;addr</parameter></methodparam>
+      <methodparam 
+choice="opt"><type>int</type><parameter>&amp;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>&amp;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
+-->
+


Reply via email to