Rapide Advanced Adulte
 
 Web|Image|Shop|Video|News|Wmx|Mobile|Wiki|Ajouter ce moteur

     Manuel PHP     
Partager
 
 
Partager
Partager

 

Table :

.Fonctions .NET
.Fonctions Apache
.Alternative PHP Cache
.Débogueur avancé pour PHP
.Tableaux
.Aspell (Obsolète)
.Nombres de grande taille BCMath
.Compilateur bytecode pour PHP
.Compression Bzip2
.Calendrier
.Paiement CCVS (Obsolète)
.Classes et Objets
.Fonctions Classkit
.Fonctions ClibPDF
.COM et .Net (Windows)
.Crack
.Caractères
.CURL
.Paiement Cybercash
.Fonctions Crédit Mutuel CyberMUT
.Cyrus IMAP
.Dates et heures
.Fonctions DB++
.DBA
.dBase
.DBM (Obsolète)
.Fonctions dbx
.Direct IO
.Accès aux dossiers
.Fonctions DOM
.Fonctions DOM XML
.Fonctions enchant
.Gestion des erreurs
.EXIF
.Fonctions Expect
.Fonctions de monitorage d'altération de fichiers
.Forms Data Format
.Fonctions Fileinfo
.Fonctions filePro
.Système de fichiers
.Fonctions Filter
.Fonctions Firebird/InterBase
.Fonctions Firebird/Interbase (PDO FIREBIRD)
.Fonctions FriBiDi
.FrontBase
.Fonctions FTP
.Fonctions
.Fonctions GeoIP
.Gettext (GNU)
.Fonctions GMP
.gnupg Fonctions
.Net Gopher
.Fonctions hash
.HTTP
.Hyperwave
.Hyperwave API
.Fonctions IBM (PDO IBM)
.Fonctions IBM DB2, Cloudscape et Apache Derby
.ICAP
.Iconv
.Fonctions ID3
.Fonctions d'administration d'IIS
.Images
.Image magick Functions
.IMAP
.Informix
.Fonctions Informix (PDO INFORMIX)
.Ingres II
.IRC
.Intégration de Java avec PHP
.Fonctions JSON
.KADM5
.LDAP
.libxml
.Lotus Notes
.Fonctions LZF
.Mail
.Traitement d'email
.Mathématiques
.MaxDB PHP Extension
.MCAL
.chiffrement mcrypt
.Fonctions de paiement MCVE (Monetra)
.Fonctions Memcache
.Hash
.Fonctions Mimetype
.Ming pour Flash
.Fonctions diverses
.mnoGoSearch
.Microsoft SQL Server
.Microsoft SQL Server et Fonctions Sybase (PDO DBLIB)
.Sessions Mohawk
.mSQL
.Chaînes de caractères multi-octets
.Fonctions muscat
.MySQL
.Fonctions MySQL (PDO MYSQL)
.Extension MySQL améliorée
.Fonctions de contrôle d'écran de terminal
.Réseau
.Fonctions Newt
.Netscape Server API
.agrégation d'objets/Composition de fonctions
.Overload
.Fonctions Oracle
.Fonctions ODBC (unifiés)
.Fonctions ODBC et DB2 (PDO ODBC)
.oggvorbis
.Gestion Audio OpenAL
.OpenSSL
.Oracle (Obsolète)
.Fonctions Oracle (PDO OCI)
.Bufferisation de sortie
.Ovrimos SQL
.Accès aux fichiers Paradox
.Fonctions Parsekit
.Contrôle des processus
.Expressions rationnelles compatibles Perl
.Fonctions PDF
.Fonctions PDO
.Phar archive stream and classes
.Options PHP et informations
.Fonctions POSIX
.Expressions rationnelles
.PostgreSQL
.Fonctions PostgreSQL (PDO PGSQL)
.Impression
.Exécution de programmes externes
.Création de document PostScript
.Pspell
.qtdom
.Radius
.Rar
.Readline (GNU)
.Recode (GNU)
.Fonctions Lecture d'En-tête RPM
.Fonctions runkit
.SAM - Messagerie asynchrone
.Extension client Satellite CORBA (Obsolète)
.SCA Functions
.Fonctions SDO
.Fonctions de Service d'Accès de Données SDO XML
.Fonctions SDO Relationnel Service d'Accès de Données
.Sémaphores et gestion de la mémoire partagée
.SESAM
.Sauvegarde d'Identifiant de session PostgreSQL
.Sessions
.Mémoire partagée
.Fonctions SimpleXML
.Fonctions SNMP
.Fonctions SOAP
.Sockets
.Fonctions Standard PHP Library (SPL)
.Fonctions SQLite
.Fonctions SQLite (PDO SQLITE)
.Shell2 sécurisé
.Fonctions statistics
.Flux
.Chaînes de caractères (Strings)
.Shockwave Flash
.Sybase
.Fonctions TCP Wrappers
.Tidy
.Analyseur de code PHP
.Unicode Functions
.URL
.Fonctions de gestion des variables
.Paiement par Verisign
.vpopmail
.API windows
.WDDX
.Fonctions win32ps
.Fonctions win32service
.Fonctions xattr
.Fonctions xdiff
.Analyseur syntaxique XML
.XML-RPC
.XMLReader functions
.Fonctions XMLWriter
.XSL
.XSLT
.YAZ
.NIS
.Fonctions ZIP
.Compression Zlib
 
   

  sockets  


CLII. Sockets

Introduction

L'extension socket implémente une interface bas niveau avec les fonctions de communication par socket, basées sur les sockets BSD si populaires, et fournit la possibilité de fonctionner aussi bien sous forme de client que de serveur.

Pour une interface socket cliente plus générique, voyez stream_socket_client(), stream_socket_server(), fsockopen() et pfsockopen().

Lorsque vous utilisez ces fonctions, il est important de vous rappeler que si de nombreuses fonctions ont le même nom que leur équivalent en langage C, elles ont souvent des déclarations différentes. Lisez attentivement les descriptions pour éviter des confusions.

Cela dit, ceux qui ne sont pas familiers avec la programmation par socket peuvent toujours trouver beaucoup de documentation dans les pages de manuel Unix appropriées, et il y a une grande quantité d'introductions en langage C sur le web, qui peuvent être facilement réutilisées, avec des adaptations mineures. UNIX Socket FAQ est un bon début.

Note : Cette extension a été déplacée dans le module PECL et ne sera plus intégrée dans PHP à partir de PHP 5.3.0.

Pré-requis

Ces fonctions sont disponibles dans le module PHP standard, qui est toujours accessible.

Installation

Les fonctions de socket décrites ici font partie d'une extension PHP qui doit être activée lors de la compilation en utilisant l'option --enable-sockets, avec la commande configure.

Note : Le support des adresses IPv6 a été ajouté en PHP 5.0.

Configuration à l'exécution

Cette extension ne définit aucune directive de configuration.

Types de ressources

Cette extension ne définit aucune ressource.

Constantes pré-définies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

AF_UNIX (entier)

AF_INET (entier)

AF_INET6 (entier)

SOCK_STREAM (entier)

SOCK_DGRAM (entier)

SOCK_RAW (entier)

SOCK_SEQPACKET (entier)

SOCK_RDM (entier)

MSG_OOB (entier)

MSG_WAITALL (entier)

MSG_PEEK (entier)

MSG_DONTROUTE (entier)

SO_DEBUG (entier)

SO_REUSEADDR (entier)

SO_KEEPALIVE (entier)

SO_DONTROUTE (entier)

SO_LINGER (entier)

SO_BROADCAST (entier)

SO_OOBINLINE (entier)

SO_SNDBUF (entier)

SO_RCVBUF (entier)

SO_SNDLOWAT (entier)

SO_RCVLOWAT (entier)

SO_SNDTIMEO (entier)

SO_RCVTIMEO (entier)

SO_TYPE (entier)

SO_ERROR (entier)

SOL_SOCKET (entier)

PHP_NORMAL_READ (entier)

PHP_BINARY_READ (entier)

SOL_TCP (entier)

SOL_UDP (entier)

Erreurs de socket

L'extension socket a été écrite pour fournir une interface utilisable avec les puissantes sockets fournies par BSD. Un soin particulier a été apporté pour que les fonctions soient aussi efficaces sous Unix que sous Windows. Presque toutes les fonctions de sockets peuvent échouer dans certaines circonstances, et émettent ainsi un message d'alerte E_WARNING décrivant l'erreur. Parfois, cela ne se fait pas selon les souhaits du développeur. Par exemple, la fonction socket_read() peut tout à coup émettre un message E_WARNING car la connexion a été inopinément interrompue. Il est commun de supprimer les erreurs avec l'opérateur @ et de traiter les erreurs avec la fonction socket_last_error(), au niveau de l'application. Vous pouvez appeler socket_strerror() avec le code d'erreur pour connaître le message d'erreur, humainement lisible. Reportez-vous à leur description pour plus de détails.

Note : Les messages E_WARNING générés par l'extension socket sont en anglais, mais ils s'afficheront en fonction de la configuration locale (LC_MESSAGES):
Warning - socket_bind() unable to bind address [98]: Die Adresse wird bereits verwendet

Exemples

Exemple 1. Exemple de socket : serveur TCP/IP simple

Cet exemple montre comment créer un serveur simple. Changez les variables address et port pour vous adapter à votre configuration, et exécutez-le. Vous pourrez alors vous connecter au serveur avec une commande comme ceci : telnet 192.168.1.53 10000 (en supposant que l'adresse et le port correspondent à votre configuration). Tout ce que vous saisissez après cela sera envoyé au serveur, et affiché en retour. Pour vous déconnecter, tapez 'quit'.

#!/usr/local/bin/php -q
<?php
error_reporting
(E_ALL);

/* Autorise l'exécution infinie du script, en attente de connexion. */
set_time_limit(0);

/* Active le vidage implicite des buffers de sortie, pour que nous
* puissions voir ce que nous lisons au fur et à mesure. */
ob_implicit_flush();

$address = '192.168.1.53';
$port = 10000;

if ((
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo
"socket_create() a échoué : raison : " . socket_strerror(socket_last_error()) . "\n";
}

if (
socket_bind($sock, $address, $port) === false) {
    echo
"socket_bind() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
}

if (
socket_listen($sock, 5) === false) {
    echo
"socket_listen() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
}

do {
    if ((
$msgsock = socket_accept($sock)) === false {
        echo
"socket_accept() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";
        break;
    }
    
/* Send instructions. */
    
$msg = "\Bienvenue sur le serveur de test PHP.\n" .
        
"Pour quitter, tapez 'quit'. Pour éteindre le serveur, tapez 'shutdown'.\n";
    
socket_write($msgsock, $msg, strlen($msg));

    do {
        if (
false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
            echo
"socket_read() a échoué : raison : " . socket_strerror(socket_last_error($msgsock)) . "\n";
            break
2;
        }
        if (!
$buf = trim($buf)) {
            continue;
        }
        if (
$buf == 'quit') {
            break;
        }
        if (
$buf == 'shutdown') {
            
socket_close($msgsock);
            break
2;
        }
        
$talkback = "PHP: You said '$buf'.\n";
        
socket_write($msgsock, $talkback, strlen($talkback));
        echo
"$buf\n";
    } while (
true);
    
socket_close($msgsock);
} while (
true);

socket_close($sock);
?>

Exemple 2. Exemple avec les sockets : client TCP/IP simple

Cet exemple implémente un client HTTP simple. Il se connecte simplement à une page, envoie une requête HEAD, affiche le résultat et se termine.

<?php
error_reporting
(E_ALL);

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

/* Lit le port du service WWW. */
$service_port = getservbyname('www', 'tcp');

/* Lit l'adresse IP du serveur de destination */
$address = gethostbyname('www.example.com');

/* Cree une socket TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (
$socket === false) {
    echo
"socket_create() a échoué : raison :  " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo
"OK.\n";
}

echo
"Essai de connexion à '$address' sur le port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if (
$socket === false) {
    echo
"socket_connect() a échoué : raison : ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo
"OK.\n";
}

$in = "HEAD / HTTP/1.0\r\n\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo
"Envoi de la requête HTTP HEAD...";
socket_write($socket, $in, strlen($in));
echo
"OK.\n";

echo
"Lire la réponse : \n\n";
while (
$out = socket_read($socket, 2048)) {
    echo
$out;
}

echo
"Fermeture de la socket...";
socket_close($socket);
echo
"OK.\n\n";
?>

Table des matières
socket_accept -- Accepte une connexion sur une socket
socket_bind -- Lie un nom à une socket
socket_clear_error -- Efface toutes les erreurs précédemment générées par une socket
socket_close -- Ferme une socket
socket_connect -- Crée une connexion sur une socket
socket_create_listen -- Ouvre une socket sur un port pour accepter les connexions
socket_create_pair -- Crée une paire de sockets identiques et les stocke dans un tableau
socket_create -- Crée une socket
socket_get_option -- Lit les options de la socket
socket_getpeername -- Interroge l'autre extrémité de la communication
socket_getsockname -- Interroge la socket locale
socket_last_error -- Lit la dernière erreur générée par une socket
socket_listen -- Attend une connexion sur une socket
socket_read -- Lit des données d'une socket
socket_recv -- Reçoit des données d'une socket connectée
socket_recvfrom -- Reçoit des données d'une socket, connectée ou pas
socket_select --  Exécute l'appel système select() un tableau de sockets avec une durée d'expiration
socket_send -- Envoie des données à une socket connectée
socket_sendto --  Envoie une message à une socket, qu'elle soit connectée ou pas
socket_set_block --  Met la socket en mode bloquant
socket_set_nonblock -- Sélectionne le mode non bloquant d'un descripteur de fichier
socket_set_option -- Modifie les options de socket
socket_shutdown -- Eteint une socket en lecture et/ou écriture
socket_strerror -- Retourne une chaîne décrivant un message d'erreur
socket_write -- Ecrit dans une socket

    Annonces       
 

 Retour au chapitre Php

 

Top
 

Ajouter JungleKey.fr à votre Explorateur

 
 

About Us | © 2007 JungleKey




iBlack | Mobile | Wiki | Ajouter ce moteur
.