<?php
set_time_limit(10);
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
si ($ zócalo) {
$resultado = socket_bind($socket, 'localhost', 1337);
si ($resultado) {
$resultado = socket_listen($socket, 5);
si ($resultado) {
eco "监听成功";
}
}
}demás{
eco "监听失败";
}
hacer {
if (($msgsock = socket_accept($socket))) { /* 发送提示信息给连接上来的用户 */
$msg = "===========================================rn " .
"Bienvenido al servidor de pruebas PHP. rnrn".
"Para salir, escriba 'salir'. rn".
"Para apagar el servidor, escriba 'apagar'.rn".
"Para obtener un mensaje de ayuda, escriba 'ayuda'.rn".
"===========================================rn" .
"php>";
}
socket_write($msgsock, $msg, strlen($msg));
hacer {
$buf = socket_read($msgsock, 2048, PHP_BINARY_READ);
si (falso === $buf) {
echo "socket_read() falló: motivo: ". socket_strerror($resultado). "norte";
romper 2;
}
si (!$buf = recortar($buf)) {
continuar;
} /* 客户端输入salir命令时候关闭客户端连接 */
si ($buf == 'q') {
romper;
} /* 客户端输入shutdown命令时候服务端和客户端都关闭 */
si ($buf == 'apagar') {
socket_close($msgsock);
romper 2;
} /* 客户端输入ayuda命令时候输出帮助信息 */
si ($buf == 'h') {
$msg = "Mensaje de ayuda del servidor PHP rnrn".
"Para salir, escriba 'salir'. rn".
"Para apagar el servidor, escriba 'apagar'.rn".
"Para obtener un mensaje de ayuda, escriba 'ayuda'.rn".
"php> ";
socket_write($msgsock, $msg, strlen($msg));
continuar;
} /* 客户端输入命令不存在时提示信息 */
$talkback = "PHP: comando desconocido '$buf'.rnphp> ";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$bufn";
} mientras (verdadero);
socket_close($msgsock);
}mientras (verdadero);
/* 关闭Socket连接 */
socket_close($socket);
?>