|
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'éxécution infinie du script, en attente de connexion. */
set_time_limit (0);
/* Active le vidage implicite des buffers de sortie, pour que nous
* puissions vois ce que nous lisons au fur et a mesure. */
ob_implicit_flush ();
$address = '192.168.1.53';
$port = 10000;
if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) {
echo "socket_create() a échoué : raison : " . socket_strerror ($sock) . "\n";
}
if (($ret = socket_bind ($sock, $address, $port)) < 0) {
echo "socket_bind() a échoué : raison : " . socket_strerror ($ret) . "\n";
}
if (($ret = socket_listen ($sock, 5)) < 0) {
echo "socket_listen() a échoué : raison : " . socket_strerror ($ret) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() a échoué : raison : " . socket_strerror ($msgsock) . "\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))) {
echo "socket_read() a échoué : raison : " . socket_strerror ($ret) . "\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);
?>
|