pollita         Fri Apr  4 14:57:01 2003 EDT

  Added files:                 
    /phpdoc/en/reference/stream/functions       stream-socket-server.xml 

  Modified files:              
    /phpdoc/en/reference/stream constants.xml 
  Log:
  New function stream_socket_server()
  
Index: phpdoc/en/reference/stream/constants.xml
diff -u phpdoc/en/reference/stream/constants.xml:1.3 
phpdoc/en/reference/stream/constants.xml:1.4
--- phpdoc/en/reference/stream/constants.xml:1.3        Fri Apr  4 11:34:39 2003
+++ phpdoc/en/reference/stream/constants.xml    Fri Apr  4 14:57:00 2003
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.3 $ -->
+<!-- $Revision: 1.4 $ -->
 <section id="stream.constants">
  &reftitle.constants;
  &extension.constants;
@@ -83,6 +83,19 @@
       <entry><constant>STREAM_CLIENT_PERSISTENT</constant></entry>
       <entry>Client socket opened with <function>stream_socket_client</function>
        should remain persistent between page loads.
+      </entry>
+     </row>
+     <row>
+      <entry><constant>STREAM_SERVER_BIND</constant></entry>
+      <entry>Tells a stream created with <function>stream_socket_server</function>
+       to bind to the specified target.  Server sockets should always include this 
flag.
+      </entry>
+     </row>
+     <row>
+      <entry><constant>STREAM_SERVER_LISTEN</constant></entry>
+      <entry>Tells a stream created with <function>stream_socket_server</function>
+       and bound using the <constant>STREAM_SERVER_BIND</constant> flag to start
+       listening on the socket.  Server sockets should always include this flag.
       </entry>
      </row>
     </tbody>

Index: phpdoc/en/reference/stream/functions/stream-socket-server.xml
+++ phpdoc/en/reference/stream/functions/stream-socket-server.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
  <refentry id="function.stream-socket-server">
   <refnamediv>
    <refname>stream_socket_server</refname>
    <refpurpose>
     Create an Internet or Unix domain server socket
    </refpurpose> 
   </refnamediv>
   <refsect1>
    <title>Description</title>
     <methodsynopsis>
      <type>resource</type><methodname>stream_socket_server</methodname>
      <methodparam><type>string</type><parameter>local_socket</parameter></methodparam>
      <methodparam 
choice="opt"><type>int</type><parameter>&amp;errno</parameter></methodparam>
      <methodparam 
choice="opt"><type>string</type><parameter>&amp;errstr</parameter></methodparam>
      <methodparam 
choice="opt"><type>int</type><parameter>flags</parameter></methodparam>
      <methodparam 
choice="opt"><type>resource</type><parameter>context</parameter></methodparam>
     </methodsynopsis>
    <para>
     Creates a stream or datagram socket on the specified 
     <parameter>local_socket</parameter>.  The type of socket created
     is determined by the transport specified using standard url formatting:
     <literal>transport://target</literal>.  For Internet Domain sockets
     (AF_INET) such as TCP and UDP, the <literal>target</literal> portion
     of the <parameter>remote_socket</parameter> parameter should consist of
     a hostname or IP address followed by a colon and a port number.  For Unix
     Domain sockets, the <parameter>target</parameter> portion should point
     to the socket file on the filesystem.

     <parameter>flags</parameter> is a bitmask field which may be set to any
     combination of socket creation flags.  The default value of flags is
     <constant>STREAM_SERVER_BIND</constant> | 
<constant>STREAM_SERVER_LISTEN</constant>.
    </para>
    <para>
     This function only creates a socket, to begin accepting connections
     use <function>stream_socket_accept</function>.
    </para>
    <para>
     If the call fails, it will return &false; and if the optional
     <parameter>errno</parameter> and <parameter>errstr</parameter>
     arguments are present they will be set to indicate the actual
     system level error that occurred in the system-level
     <literal>connect()</literal> call. If the value returned in
     <parameter>errno</parameter> is <literal>0</literal> and the
     function returned &false;, it is an indication that the error
     occurred before the <literal>connect()</literal> call. This is
     most likely due to a problem initializing the socket. Note that
     the <parameter>errno</parameter> and
     <parameter>errstr</parameter> arguments will always be passed by
     reference.
    </para>
    <para>
     Depending on the environment, Unix domain sockets may not be available.  
     A list of available transports can be retrieved using 
     <function>stream_get_transports</function>.
    </para>
    <para>
     <function>stream_socket_server</function>.
     <example>
      <title><function>stream_socket_server</function> Example</title>
      <programlisting role="php">
<![CDATA[
<?php
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
  echo "$errstr ($errno)<br>\n";
} else {
  while ($conn = stream_socket_accept($socket)) {
    fputs ($conn, 'Thank you for connecting to my server. The local time is ' . 
date('n/j/Y g:i a') . "\n");
    fclose ($conn);
  }
  fclose($socket);
}
?>
]]>
      </programlisting>
     </example>
     The example below shows how to act as a time server which can respond
     to time queries as shown in an example on 
<function>stream_socket_client</function>.
     <note>
      <simpara>Most systems require root access to create a server socket on
       a port below 1024.
      </simpara>
     </note>
     <example>
     <title>Using UDP server sockets</title>
     <programlisting role="php">
<![CDATA[
<?php
$socket = stream_socket_server("udp://0.0.0.0:13", $errno, $errstr);
if (!$socket) {
    echo "ERROR: $errno - $errstr<br>\n";
} else {
  while ($conn = stream_socket_accept($socket)) {
    fwrite($conn, date("D M j H:i:s Y\r\n"));
    fclose($conn);
  }
  fclose($socket);
}
?>
]]>
     </programlisting>
     </example>
     See also <function>stream_socket_client</function>, 
     <function>stream_set_blocking</function>,
     <function>stream_set_timeout</function>, 
     <function>fgets</function>,
     <function>fgetss</function>, <function>fputs</function>,
     <function>fclose</function>, <function>feof</function>, and
     the <link linkend="ref.curl">Curl extension</link>.
    </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:"../../../../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
-->



-- 
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to