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 +--> +