nicobn          Mon Jun 25 17:15:51 2007 UTC

  Modified files:              
    /phpdoc/en/reference/sockets/functions      socket-recvfrom.xml 
  Log:
  Documented the socket_recvfrom function
  
  
http://cvs.php.net/viewvc.cgi/phpdoc/en/reference/sockets/functions/socket-recvfrom.xml?r1=1.10&r2=1.11&diff_format=u
Index: phpdoc/en/reference/sockets/functions/socket-recvfrom.xml
diff -u phpdoc/en/reference/sockets/functions/socket-recvfrom.xml:1.10 
phpdoc/en/reference/sockets/functions/socket-recvfrom.xml:1.11
--- phpdoc/en/reference/sockets/functions/socket-recvfrom.xml:1.10      Wed Jun 
20 22:25:25 2007
+++ phpdoc/en/reference/sockets/functions/socket-recvfrom.xml   Mon Jun 25 
17:15:51 2007
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.10 $ -->
+<!-- $Revision: 1.11 $ -->
 <refentry xmlns="http://docbook.org/ns/docbook"; 
xml:id="function.socket-recvfrom">
  <refnamediv>
   <refname>socket_recvfrom</refname>
-  <refpurpose>Receives data from a socket, connected or not </refpurpose>
+  <refpurpose>Receives data from a socket whether or not it is 
connection-oriented</refpurpose>
  </refnamediv>
  
  <refsect1 role="description">
@@ -18,7 +18,170 @@
    <methodparam choice="opt"><type>int</type><parameter 
role="reference">port</parameter></methodparam>
   </methodsynopsis>
   <para>
-   &warn.undocumented.func;
+  The <function>socket_recvfrom</function> function receives 
<parameter>len</paramater>
+  bytes of data in <parameter>buf</parameter> from <parameter>name</parameter> 
on port
+  <parameter>port</parameter> (if socket is not of AF_UNIX type) using
+  <parameter>socket</parameter>. <function>socket_recvfrom</function> can be 
used to
+  gather data from either a connected or an unconnected socket. Additionally, 
one or more
+  flags can be specified to modify the behaviour of the function.
+  </para>
+  <para>
+  The <parameter>name</parameter> and <parameter>port</parameter> must be 
passed as a 
+  reference. If the socket is not connection-oriented, 
<parameter>name</parameter> will
+  be set to the internet protocol address of the remote host or the path to 
the UNIX
+  socket. If the socket is connection-oriented, <parameter>name</parameter> is 
&null.
+  Additionnally, the <parameter>port</parameter> will contain the port of the
+  remote host in the case of a not connection-oriented AF_INET or AF_INET6 
socket. 
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>socket</parameter></term>
+     <listitem>
+      <para>
+       The <parameter>socket</parameter> must be a socket resource previously 
created with socket_create().
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><parameter>buf</parameter></term>
+     <listitem>
+      <para>
+       The data received will be fetched to the variable specified with 
<parameter>buf</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><parameter>len</parameter></term>
+     <listitem>
+      <para>
+       Up to <parameter>len</parameter> bytes will be fetched from remote host.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><parameter>flags</parameter></term>
+     <listitem>
+      <para>
+      The following table contains the different flags that can be set using 
the
+      <parameter>flags</parameter> parameter. Use the OR logic operator to use 
more
+      than one flag.
+      </para>
+      
+      <table>
+       <title>Available flags</title>
+       <tgroup cols="2">
+        <thead>
+         <row>
+          <entry>Flag</entry>
+          <entry>Description</entry>
+         </row>
+        </thead>
+        <tbody>
+         <row>
+          <entry>MSG_OOB</entry>
+          <entry>
+          Receive out-of-band data.
+          </entry>
+         </row>
+         <row>
+          <entry>MSG_PEEK</entry>
+          <entry>
+          Receive data from the beginning of the receive queue without removing
+          it from the queue.
+          </entry>
+         </row>
+         <row>
+          <entry>MSG_WAITALL</entry>
+          <entry>
+          Block until at least <parameter>len</parameter> are received. 
However,
+          if a signal is caught or the remote host disconnects, the function
+          may return less data.
+          </entry>
+         </row>
+         <row>
+          <entry>MSG_DONTWAIT</entry>
+          <entry>
+          With this flag set, the function returns even if it would normally 
have
+          blocked.
+          </entry>
+         </row>
+        </tbody>
+       </tgroup>
+      </table>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><parameter>name</parameter></term>
+     <listitem>
+      <para>
+      If the socket is of AF_UNIX type, <parameter>name</parameter> is the 
path to the 
+      file. Else, in the case of non-connection oriented socket 
<parameter>name</parameter> 
+      is the IP address of the remote host and &null if the socket is 
connection oriented.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
+     <term><parameter>port</parameter></term>
+     <listitem>
+      <para>
+      This argument only applies to AF_INET and AF_INET6 sockets and specifies 
the 
+      remote port from which the data is received. If the socket is connection
+      oriented, <parameter>port</parameter> will be &null.
+      </para>
+     </listitem>
+    </varlistentry>
+    
+   </variablelist>
+  </para>
+ </refsect1>
+ 
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   <function>socket_recvfrom</function> returns the number of bytes received
+   or -1 if there was an error. The actual error code can be retrieved by 
+   calling <function>socket_last_error</function>. This error code may be 
passed 
+   to <function>socket_strerror</function> to get a textual explanation of the
+   error.
+  </para>
+ </refsect1>
+                     
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title><function>socket_recvfrom</function> example</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+error_reporting(E_ALL | E_STRICT);
+
+$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
+socket_connect($socket, "127.0.0.1", 1223);
+
+$Ip = "";
+socket_recvfrom($socket, $buf, 12, 0, $Ip, $Port);
+
+echo "Received data: $buf";
+?>
+]]>
+    </programlisting>
+    <para>
+    This will example will initiate a TCP connection to 127.0.0.1 on port 1223
+    and print at most 12 characters received from the remote host or block
+    until no data is received.
+    </para>
+   </example>
   </para>
  </refsect1>
 
@@ -46,6 +209,17 @@
   </para>
  </refsect1>
 
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>socket_recv</function></member>
+    <member><function>socket_send</function></member>
+    <member><function>socket_sendto</function></member>
+    <member><function>socket_create</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
 </refentry>
 
 <!-- Keep this comment at the end of the file

Reply via email to