PHP
Referenzliste
socket_recv
Socket-Funktionen
Befehl:
int socket_recv ( resource $socket , string &$buf , int $len , int $flags )
Parameter-Liste:
Beschreibung | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Ein gültiger Socket-Deskriptor, der von socket_create() oder socket_accept() erzeugt wurde. | |||||||||||
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. | |||||||||||
Maximal len Bytes werden von dem entfernten System abgerufen. | |||||||||||
Der Wert von flags kann jede beliebige Kombination der folgenden Flags sein, verknüpft mit dem binären ODER (|) Operator.
|
Rückgabewerte:
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. Beschreibung:
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. Aktiv in Version:
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_recv() - Beispiel:
Eingabe:
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"; ?>
Ausgabe:
<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:
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.
OK.
Versuche Verbing zu '208.77.188.166' auf Port '80' aufzubauen...OK.
Sende HTTP HEAD Request...OK.
Lese Response:
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.
Socket-Funktionen