1
0
mirror of https://github.com/php/doc-it.git synced 2026-03-24 15:42:46 +01:00
Files
archived-doc-it/reference/sockets/functions/socket-create.xml
Richard Quadling d756922bf9 Reencode XML to UTF-8
git-svn-id: https://svn.php.net/repository/phpdoc/it/trunk@314557 c90b9560-bf6c-de11-be94-00142212c4b1
2011-08-08 16:34:19 +00:00

218 lines
7.8 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- splitted from ./it/functions/sockets.xml, last change in rev 1.1 -->
<!-- last change to 'socket-create' in en/ tree in rev 1.4 -->
<!-- EN-Revision: n/a Maintainer: darvina Status: ready -->
<!-- OLD-Revision: 1.34/EN.1.4 -->
<refentry xml:id="function.socket-create" xmlns="http://docbook.org/ns/docbook">
<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>dominio</parameter></methodparam>
<methodparam><type>int</type><parameter>tipo</parameter></methodparam>
<methodparam><type>int</type><parameter>protocollo</parameter></methodparam>
</methodsynopsis>
<para>
La funzione crea un punto terminale di una comunicazione (un socket)
e restituisce una risorsa di tipo socket. In una tipica connessione di rete
si hanno 2 sockets, uno con il ruolo di client
e l'altro con il ruolo di server.
</para>
<para>
Il parametro <parameter>dominio</parameter> indica il dominio (famiglia di
protocolli da usarsi per la comunicazione tra i sockets).
</para>
<table>
<title>Famiglie di indirizzi/protocolli disponibili</title>
<tgroup cols="2">
<thead>
<row>
<entry>Dominio</entry>
<entry>Descrizione</entry>
</row>
</thead>
<tbody>
<row>
<entry>AF_INET</entry>
<entry>
Protocollo Internet basato su IPv4. TCP e UDP sono i protocolli
più comuni di questa famiglia.
</entry>
</row>
<row>
<entry>AF_INET6</entry>
<entry>
Protocolli basati su IPv6. TCP ed UDP sono i protocolli più comuni
di questa famiglia. Il supporto a questa famiglia è stato aggiunto in PHP 5.0.0.
</entry>
</row>
<row>
<entry>AF_UNIX</entry>
<entry>
Famiglia di protocolli per le comunicazioni locali. L'alta efficenza
ed il basso overhead ne fanno una buona forma di IPC (comunicazione inter-processo).
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
Il parametro <parameter>tipo</parameter> indica il tipo di comunicazione
da usare con il socket.
</para>
<table>
<title>Tipi di socket disponibili</title>
<tgroup cols="2">
<thead>
<row>
<entry>Tipo</entry>
<entry>Descrizione</entry>
</row>
</thead>
<tbody>
<row>
<entry>SOCK_STREAM</entry>
<entry>
Fornisce una connessione sequenziale, affidabile e full-duplex. Può
essere supportato un meccanismo di trasmissione fuori-banda.
Il protocollo TCP è basato su questo tipo di socket.
</entry>
</row>
<row>
<entry>SOCK_DGRAM</entry>
<entry>
Supporta i datagrammi (privo di connessione, messaggi inaffidabili di una lunghezza massima prefissata).
Il protocollo UDP è basato su questo tipo di socket.
</entry>
</row>
<row>
<entry>SOCK_SEQPACKET</entry>
<entry>
Fornisce una trasmissione di dati sequenziale, affidabile, bi-direzionale per i
datagrammi di lunghezza massima prefissata; all'utilizzatore è richiesto di
leggere l'intero pacchetto in ogni esecuzione della funzione di lettura dal socket.
</entry>
</row>
<row>
<entry>SOCK_RAW</entry>
<entry>
Fornisce un'accesso raw al protocollo di rete. Questo tipo di socket può essere
utilizzato per costruire manualmente qualsiasi tipo di protocollo. Un comune utilizzo
di questa tipologia di socket è la realizzazione di richieste ICMP (tipo
il ping o traceroute).
</entry>
</row>
<row>
<entry>SOCK_RDM</entry>
<entry>
Fornisce un'interfaccia affidabile per i datagrammi ma non ne garantisce l'ordine.
Probabilmente questo non è implementato nel vostro sistema operativo.
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
Il parametro <parameter>protocollo</parameter> indica
lo specifico protocollo nel <parameter>dominio</parameter> indicato da usarsi
con il socket restituito. Il valore opportuno può essere recuperato
utilizzando <function>getprotobyname</function>. Se il protocollo
desiderato è il TCP o l'UDP, si possono utilizzare le corrispondenti costanti
<constant>SOL_UDP</constant> e <constant>SOL_TCP</constant>.
</para>
<table>
<title>Protocolli comuni</title>
<tgroup cols="2">
<thead>
<row>
<entry>Nome</entry>
<entry>Descrizione</entry>
</row>
</thead>
<tbody>
<row>
<entry>icmp</entry>
<entry>
L'Internet Control Message Protocol viene utilizzato principalmente dai gateway
e dagli host per riportare errori nelle comunicazioni con datagrammi. Il
comando "ping" (presente in quasi tutti i moderni sistemi operativi) è un esempio
dell'applicazione di ICMP.
</entry>
</row>
<row>
<entry>udp</entry>
<entry>
Lo User Datagram Protocol è un protocollo privo di connessione,
inaffidabile con record di lunghezza fissa. Per questo l'UDP
richiede poco overhead di protocollo.
</entry>
</row>
<row>
<entry>tcp</entry>
<entry>
Il Transmission Control Protocol è un procotollo affidabile, basato sulla connessione,
orientato al flusso, full duplex. Il TCP garantisce che tutti i pacchetti
siano ricevuti nel medesimo ordine in cui siano stati inviati. Se un pacchetto
viene perso durante la trasmissione, il TCP provvederà automaticamente alla ritrasmissione
fino a quando l'host remoto non conferma la ricezione dello stesso. Per ragioni
di affidabilità e di prestazioni, è il TCP stesso a decidere l'appropriata dimensione
dei pacchetti del sottostante livello di datagrammi. Pertanto le applicazioni TCP devono
permettere la parziale ritrasmissione di un record.
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
La funzione restituisce una risorsa di tipo socket se ha successo, oppure &false; in caso di errore.
In quest'ultimo caso si può ottenere il codice di errore tramite
<function>socket_last_error</function>. Tale codice può essere
passato alla funzione <function>socket_strerror</function>
per ottenere una descrizione dell'errore.
</para>
<note>
<para>
Se si forniscono valori non validi per
<parameter>dominio</parameter> o <parameter>tipo</parameter>,
la funzione <function>socket_create</function> imposta i parametri
rispettivamente a <constant>AF_INET</constant> e <constant>SOCK_STREAM</constant>
ed emette un messaggio di tipo <constant>E_WARNING</constant>.
</para>
</note>
<para>
Vedere anche
<function>socket_accept</function>,
<function>socket_bind</function>,
<function>socket_connect</function>,
<function>socket_listen</function>,
<function>socket_last_error</function> e
<function>socket_strerror</function>.
</para>
</refsect1>
</refentry>
<!-- 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:"~/.phpdoc/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
-->