Manuel PHP

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'.

  1. <?php
  2. error_reporting(E_ALL);  
  3.  
  4. /* Autorise l'exécution infinie du script, en attente de connexion. */  
  5. set_time_limit(0);  
  6.  
  7. /* Active le vidage implicite des buffers de sortie, pour que nous
  8. * puissions voir ce que nous lisons au fur et à mesure. */  
  9. ob_implicit_flush();  
  10.  
  11. $address = '192.168.1.53';  
  12. $port = 10000;  
  13.  
  14. if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { 
  15.    echo "socket_create() a échoué : raison : " . socket_strerror(socket_last_error()) . "\n";  
  16. }  
  17.  
  18. if (socket_bind($sock, $address, $port) === false) { 
  19.    echo "socket_bind() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";  
  20. }  
  21.  
  22. if (socket_listen($sock, 5) === false) { 
  23.    echo "socket_listen() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n";  
  24. }  
  25.  
  26. do { 
  27.    if (($msgsock = socket_accept($sock)) === false) { 
  28.       echo "socket_accept() a échoué : raison : " . socket_strerror(socket_last_error($sock)) . "\n"; 
  29.       break; 
  30.    } 
  31.    /* Send instructions. */ 
  32.    $msg = "\Bienvenue sur le serveur de test PHP.\n" . 
  33.       "Pour quitter, tapez 'quit'. Pour éteindre le serveur, tapez 'shutdown'.\n"; 
  34.    socket_write($msgsock, $msg, strlen($msg)); 
  35.  
  36.    do { 
  37.       if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) { 
  38.          echo "socket_read() a échoué : raison : " . socket_strerror(socket_last_error($msgsock)) . "\n"; 
  39.          break 2; 
  40.       } 
  41.       if (!$buf = trim($buf)) { 
  42.          continue; 
  43.       } 
  44.       if ($buf == 'quit') { 
  45.          break; 
  46.       } 
  47.       if ($buf == 'shutdown') { 
  48.          socket_close($msgsock); 
  49.          break 2; 
  50.       } 
  51.       $talkback = "PHP: You said '$buf'.\n"; 
  52.       socket_write($msgsock, $talkback, strlen($talkback)); 
  53.       echo "$buf\n"; 
  54.    } while (true); 
  55.    socket_close($msgsock);  
  56. } while (true);  
  57.  
  58. socket_close($sock);  
  59. ?> 

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.

  1. <?php
  2. error_reporting(E_ALL);  
  3.  
  4. echo "<h2>Connexion TCP/IP</h2>\n";  
  5.  
  6. /* Lit le port du service WWW. */  
  7. $service_port = getservbyname('www', 'tcp');  
  8.  
  9. /* Lit l'adresse IP du serveur de destination */  
  10. $address = gethostbyname('www.example.com');  
  11.  
  12. /* Cree une socket TCP/IP. */  
  13. $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  
  14. if ($socket === false) { 
  15.    echo "socket_create() a échoué : raison : " . socket_strerror(socket_last_error()) . "\n";  
  16. } else { 
  17.    echo "OK.\n";  
  18. }  
  19.  
  20. echo "Essai de connexion à '$address' sur le port '$service_port'...";  
  21. $result = socket_connect($socket, $address, $service_port);  
  22. if ($socket === false) { 
  23.    echo "socket_connect() a échoué : raison : ($result)" . socket_strerror(socket_last_error($socket)) . "\n";  
  24. } else { 
  25.    echo "OK.\n";  
  26. }  
  27.  
  28. $in = "HEAD / HTTP/1.0\r\n\r\n";  
  29. $in .= "Host: www.example.com\r\n";  
  30. $in .= "Connection: Close\r\n\r\n";  
  31. $out = '';  
  32.  
  33. echo "Envoi de la requête HTTP HEAD...";  
  34. socket_write($socket, $in, strlen($in));  
  35. echo "OK.\n";  
  36.  
  37. echo "Lire la réponse : \n\n";  
  38. while ($out = socket_read($socket, 2048)) { 
  39.    echo $out;  
  40. }  
  41.  
  42. echo "Fermeture de la socket...";  
  43. socket_close($socket);  
  44. echo "OK.\n\n";  
  45. ?> 


Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique