(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_recv — Empfängt Daten von einem verbundenen Socket
$socket
   , string &$buf
   , int $len
   , int $flags
   )
   Die socket_recv() Funktion empfängt
   len Bytes Daten in buf von
   socket. socket_recv() kann
   genutzt werden, um Daten von verbundenen Sockets zu lesen. Zusätzlich
   können einer oder mehrere Flags angegeben werden, um das Verhalten der
   Funktion zu modifizieren.
  
   buf wird als Referenz übergeben, daher muss er als
   Variable in der Liste der Argumente angegeben werden. Gelesene Daten von
   socket durch socket_recv()
   werden in buf zurückgegeben.
  
socket
       Der socket muss eine socket Ressource sein, die
       zuvor mit socket_create() erzeugt wurde.
      
buf
       Empfangene Daten werden in die Variable geschrieben, die durch
       buf spezifiziert ist. Tritt ein Fehler auf, wird
       die Verbindung zurückgesetzt oder, wenn keine Daten verfügbar sind, wird
       buf auf NULL gesetzt.
      
len
       Maximal len Bytes werden von dem entfernten
       System abgerufen.
      
flags
       Der Wert von flags kann jede beliebige
       Kombination der folgenden Flags sein, verknüpft mit dem binären ODER
       (|) Operator.
      
| Flag | Beschreibung | 
|---|---|
MSG_OOB | 
          Verarbeite bandexterne (out-of-band) Daten. | 
MSG_PEEK | 
          Lies Daten ab Anfang der Empfangs-Warteschlange, ohne die Daten aus der Warteschlange zu löschen. | 
MSG_WAITALL | 
          
           Blockiere so lange, bis mindestens len Daten
           gelesen wurden. Wenn jedoch ein Signal empfangen wurde oder der
           entfernte Host die Verbindung beendet, kann die Funktion auch weniger
           Daten zurückgeben.
           | 
         
MSG_DONTWAIT | 
          Wenn dieses Flag gesetzt ist, kehrt die Funktion zurück, auch wenn sie normalerweise blockieren würde. | 
   socket_recvfrom() gibt die Anzahl der empfangenen Bytes
   zurück oder FALSE, falls ein Fehler auftrat. Der aktuelle Fehlercode kann mit 
   socket_last_error() abgefragt werden. Dieser Fehlercode
   kann an die Funktion socket_strerror() übergeben werden,
   um eine textuelle Beschreibung des Fehlers zu erhalten.
  
Beispiel #1 socket_recv() Beispiel
Dies ist eine einfache Umformulierung des ersten Beispieles von Beispiele unter Nutzung von socket_recv().
<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP Verbindung</h2>\n";
/* Erhalte Port für den WWW Service. */
$service_port = getservbyname('www', 'tcp');
/* Erhalte die IP Adresse des Ziel Hosts. */
$address = gethostbyname('www.example.com');
/* Erzeuge ein TCP/IP Socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() schlug fehl: Grund: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.\n";
}
echo "Versuche Verbing zu '$address' auf Port '$service_port' aufzubauen...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "socket_connect() schulg fehl.\nGrund: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Sende HTTP HEAD Request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Lese Response:\n\n";
$buf = 'Dies ist mein Puffer.';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
    echo "Las $bytes bytes von socket_recv(). Schliesse Socket...";
} else {
    echo "socket_recv() schlug fehl; Grund: " . socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);
echo $buf . "\n";
echo "OK.\n\n";
?>
Obiges Beispiel erzeugt eine Ausgabe ähnlich wie:
<h2>TCP/IP Verbindung</h2> OK. Versuche Verbing zu '208.77.188.166' auf Port '80' aufzubauen...OK. Sende HTTP HEAD Request...OK. Lese Response: Las 123 bytes von socket_recv(). Schliesse Socket...HTTP/1.1 200 OK Date: Mon, 14 Sep 2009 08:56:36 GMT Server: Apache/2.2.3 (Red Hat) Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT ETag: "b80f4-1b6-80bfd280" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 OK.