Rechercher une fonction PHP

socket_recv

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_recvReçoit des données d'un socket connecté

Description

socket_recv ( resource $socket , string &$buf , int $len , int $flags ) : int

La fonction socket_recv() reçoit len octets de données dans buf depuis socket. socket_recv() peut être utilisée pour récupérer des données depuis des sockets connectés. Aussi, des drapeaux permettent de changer le comportement de la fonction.

buf est passé par référence, il doit donc être présent dans la liste des arguments. Les données reçues depuis la socket par socket_recv() seront retournées dans buf.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

socket

socket doit être une ressource de socket précédemment créée par socket_create().

buf

Les données reçues seront transmises dans buf. Si une erreur survient, si la connexion est fermée ou si aucune donnée n'est disponible, buf vaudra alors NULL.

len

Jusqu'à len octets seront lus depuis l'hôte distant.

flags

La valeur de flags peut être une combinaison des drapeaux suivants, groupés au moyen de l'opérateur binaire OR (|).

Valeurs possibles de flags
Flag Description
MSG_OOB Traite des données hors de bande.
MSG_PEEK Reçoit les données depuis le début de la queue sans pour autant les supprimer de la queue.
MSG_WAITALL Bloque avant qu'au moins len sont reçues. Cependant, si un signal est intercépté ou si la connexion est terminée, la fonction pourra retourner moins de données.
MSG_DONTWAIT Si ce drapeau est spécifié, la fonction retournera ses données alors qu'en temps normal elle aurait bloqué.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

socket_recv() retourne le nombre d'octets reçus, ou FALSE si une erreur est apparue. Le code d'erreur actuel peut être récupéré en appelant socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour avoir une représentation textuelle de l'erreur.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemples avec socket_recv()

Cet exemple est une réécriture de l'exemple pris sur Exemples pour utiliser socket_recv().

<?php
error_reporting
(E_ALL);

echo 
"<h2>TCP/IP Connection</h2>\n";

/* Récupère le port du service WWW. */
$service_port getservbyname('www''tcp');

/* Récupère l'adresse IP de l'hôte cible. */
$address gethostbyname('www.example.com');

/* Crée un socket TCP/IP. */
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
if (
$socket === false) {
    echo 
"socket_create() a échoué: raison: " socket_strerror(socket_last_error()) . "\n";
} else {
    echo 
"OK.\n";
}

echo 
"Tentative de connexion à '$address' sur le port '$service_port'...";
$result socket_connect($socket$address$service_port);
if (
$result === false) {
    echo 
"socket_connect() a échoué.\nRaison: ($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 .= "Connexion: Fermée\r\n\r\n";
$out '';

echo 
"Envoi d'une requête HTTP HEAD...";
socket_write($socket$instrlen($in));
echo 
"OK.\n";

echo 
"Lecture de la réponse:\n\n";
$buf 'Ceci est mon buffer.';
if (
false !== ($bytes socket_recv($socket$buf2048MSG_WAITALL))) {
    echo 
"$bytes octets lus depuis socket_recv(). Fermeture du socket...";
} else {
    echo 
"socket_recv() a échoué; raison: " socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);

echo 
$buf "\n";
echo 
"OK.\n\n";
?>

L'exemple ci-dessus produit un résultat ressemblant à celà:

<h2>TCP/IP Connection</h2>
OK.
Tentative de connexion à '208.77.188.166' sur le port '80'...OK.
Envoi d'une requête HTTP HEAD...OK.
Lecture de la réponse:

123 octets lus depuis socket_recv(). Fermeture du 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
Connexion : Fermée
Content-Type: text/html; charset=UTF-8

OK.

Rechercher une fonction PHP

Version en cache

22/11/2024 12:19:04 Cette version de la page est en cache (à la date du 22/11/2024 12:19:04) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-socket-recv.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut