<?php
set_time_limit(10);
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
si ($socket) {
$result = socket_bind($socket, 'localhost', 1337);
si ($résultat) {
$result = socket_listen($socket, 5);
si ($résultat) {
echo "监听成功";
}
}
}autre{
echo "监听失败";
}
faire {
if (($msgsock = socket_accept($socket))) { /* 发送提示信息给连接上来的用户 */
$msg = "===========================================rn " .
"Bienvenue sur le serveur de test PHP. rnrn" .
"Pour quitter, tapez 'quitter'. rn" .
"Pour arrêter le serveur, tapez 'shutdown'.rn" .
"Pour obtenir un message d'aide, tapez 'help'.rn" .
"===========================================rn" .
"php>" ;
}
socket_write($msgsock, $msg, strlen($msg));
faire {
$buf = socket_read($msgsock, 2048, PHP_BINARY_READ);
si (faux === $buf) {
echo "socket_read() a échoué : raison : " . socket_strerror($result) . "n" ;
pause 2 ;
}
si ($buf = trim($buf)) {
continuer;
} /* Quitter et quitter */
si ($buf == 'q') {
casser;
} /* 客户端输入shutdown命令时候服务端和客户端都关闭 */
si ($buf == 'arrêt') {
socket_close($msgsock);
pause 2 ;
} /* 客户端输入help命令时候输出帮助信息 */
si ($buf == 'h') {
$msg = " Message d'aide du serveur PHP rnrn" .
" Pour quitter, tapez 'quitter'. rn" .
" Pour arrêter le serveur, tapez 'shutdown'.rn" .
" Pour obtenir un message d'aide, tapez 'help'.rn" .
"php>" ;
socket_write($msgsock, $msg, strlen($msg));
continuer;
} /* 客户端输入命令不存在时提示信息 */
$talkback = "PHP : commande inconnue '$buf'.rnphp> " ;
socket_write($msgsock, $talkback, strlen($talkback));
echo "$bufn";
} while (vrai);
socket_close($msgsock);
} while (vrai) ;
/* 关闭Socket连接 */
socket_close($socket);
?>