socket_recv Empfängt Daten von einem verbundenen Socket &reftitle.description; intfalsesocket_recv Socketsocket stringnulldata intlength intflags Die Funktion socket_recv empfängt length Bytes Daten in data 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. data 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 data zurückgegeben. &reftitle.parameters; socket Der socket muss eine Socket-Instanz sein, die zuvor mit socket_create erzeugt wurde. data Empfangene Daten werden in die Variable geschrieben, die durch data spezifiziert ist. Tritt ein Fehler auf, wird die Verbindung zurückgesetzt oder, wenn keine Daten verfügbar sind, wird data auf &null; gesetzt. length Maximal length 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. Mögliche Werte von <parameter>flags</parameter> Flag &Description; 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 length 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.
&reftitle.returnvalues; socket_recv 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. &reftitle.changelog; &Version; &Description; &sockets.changelog.socket-param; &reftitle.examples; <function>socket_recv</function>-Beispiel Dies ist eine einfache Umformulierung des ersten Beispiels von unter Nutzung von socket_recv. TCP/IP-Verbindung\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"; ?> ]]> &example.outputs.similar; TCP/IP-Verbindung 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. ]]>