<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<appendix xml:id="transports" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 <title>List of Supported Socket Transports</title>
 <para>
  The following is a list of the various URL style socket transports
  that PHP has built-in for use with the streams based socket
  functions such as <function>fsockopen</function>, and
  <function>stream_socket_client</function>.  These transports do
  <emphasis>not</emphasis> apply to the 
  <link linkend="ref.sockets">Sockets Extension</link>.
 </para>

 <para>
  For a list of transports installed in your version of
  PHP use <function>stream_get_transports</function>.
 </para>

 <section xml:id="transports.inet">
  <title>Internet Domain: TCP, UDP, SSL, and TLS</title>
  <simpara>
   PHP 4, PHP 5.
   <literal>ssl://</literal> &amp; <literal>tls://</literal> since PHP 4.3.0
   <literal>sslv2://</literal> &amp; <literal>sslv3://</literal> since PHP 5.0.2
  </simpara>

  <note>
   <simpara>
    If no transport is specified, <literal>tcp://</literal> will be assumed.
   </simpara>
  </note>

  <itemizedlist>
   <listitem><simpara><literal>127.0.0.1</literal></simpara></listitem>
   <listitem><simpara><literal>fe80::1</literal></simpara></listitem>
   <listitem><simpara><literal>www.example.com</literal></simpara></listitem>
   <listitem><simpara><literal>tcp://127.0.0.1</literal></simpara></listitem>
   <listitem><simpara><literal>tcp://fe80::1</literal></simpara></listitem>
   <listitem><simpara><literal>tcp://www.example.com</literal></simpara></listitem>
   <listitem><simpara><literal>udp://www.example.com</literal></simpara></listitem>
   <listitem><simpara><literal>ssl://www.example.com</literal></simpara></listitem>
   <listitem><simpara><literal>sslv2://www.example.com</literal></simpara></listitem>
   <listitem><simpara><literal>sslv3://www.example.com</literal></simpara></listitem>
   <listitem><simpara><literal>tls://www.example.com</literal></simpara></listitem>
  </itemizedlist>

  <simpara>
   Internet Domain sockets expect a port number in addition
   to a target address.  In the case of <function>fsockopen</function>
   this is specified in a second parameter and therefore does
   not impact the formatting of transport URL.  With
   <function>stream_socket_client</function> and related functions
   as with traditional URLs however, the port number is specified
   as a suffix of the transport URL delimited by a colon.
  </simpara>

  <itemizedlist>
   <listitem><simpara><literal>tcp://127.0.0.1:80</literal></simpara></listitem>
   <listitem><simpara><literal>tcp://[fe80::1]:80</literal></simpara></listitem>
   <listitem><simpara><literal>tcp://www.example.com:80</literal></simpara></listitem>
  </itemizedlist>

  <note>
   <title>IPv6 numeric addresses with port numbers</title>
   <simpara>
    In the second example above, while the IPv4 and hostname
    examples are left untouched apart from the addition of 
    their colon and portnumber, the IPv6 address is wrapped in
    square brackets: <literal>[fe80::1]</literal>.  This is to
    distinguish between the colons used in an IPv6 address and
    the colon used to delimit the portnumber.
   </simpara>
  </note>

  <simpara>
   The <literal>ssl://</literal> and <literal>tls://</literal> transports 
   (available only when openssl support is compiled into PHP) are extensions 
   of the <literal>tcp://</literal> transport which include SSL encryption.
   Since PHP 4.3.0 OpenSSL support must be statically 
   compiled into PHP, since PHP 5.0.0
   it may be compiled as a module or statically.
  </simpara>

  <simpara>
   <literal>ssl://</literal> will attempt to negotiate an SSL V2,
   or SSL V3 connection depending on the capabilities and preferences
   of the remote host.  <literal>sslv2://</literal> and 
   <literal>sslv3://</literal> will select the SSL V2 or SSL V3
   protocol explicitly.
  </simpara>
 </section>

 <section xml:id="transports.unix">
  <title>Unix Domain: Unix and UDG</title>
  <simpara>
   <literal>unix://</literal> and
   <literal>udg://</literal> (udg:// since PHP 5).
  </simpara>

  <itemizedlist>
   <listitem><simpara><literal>unix:///tmp/mysock</literal></simpara></listitem>
   <listitem><simpara><literal>udg:///tmp/mysock</literal></simpara></listitem>
  </itemizedlist>

  <simpara>
   <literal>unix://</literal> provides access to a socket stream
   connection in the Unix domain. <literal>udg://</literal> provides
   an alternate transport to a Unix domain socket using the user datagram
   protocol.
  </simpara>

  <simpara>
   Unix domain sockets, unlike Internet domain sockets, do not expect
   a port number.  In the case of <function>fsockopen</function> the
   <parameter>portno</parameter> parameter should be set to 0.
  </simpara>
 </section>

</appendix>

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