<?php
set_time_limit (10);
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
если ($сокет) {
$result =ocket_bind($socket, 'localhost', 1337);
если ($результат) {
$result = socket_listen($socket, 5);
если ($результат) {
эхо "监听成功";
}
}
}еще{
эхо "监听失败";
}
делать {
if (($msgsock =ocket_accept($socket))) { /* 发送提示信息给连接上来的用户 */
$msg = "=======================================rn " .
«Добро пожаловать на тестовый сервер PHP. rnrn» .
«Чтобы выйти, введите «quit». rn» .
«Чтобы выключить сервер, введите «shutdown».rn» .
«Чтобы получить справочное сообщение, введите «help».rn» .
"========================================rn" .
"php>";
}
Socket_write($msgsock, $msg, strlen($msg));
делать {
$buf = socket_read($msgsock, 2048, PHP_BINARY_READ);
если (ложь === $buf) {
echo "socket_read() не удалось: причина: " . сокет_strerror($результат) . "п";
перерыв 2;
}
if (!$buf = Trim($buf)) {
продолжать;
} /* 客户端输入quit命令时候关闭客户端连接 */
если ($buf == 'q') {
перерыв;
} /* Завершение работы по завершению работы и завершение работы */
if ($buf == 'выключение') {
сокет_закрыть ($ msgsock);
перерыв 2;
} /* Помощь в помощи, помощь в работе */
если ($buf == 'h') {
$msg = "Сообщение справки PHP-сервера rnrn" .
«Чтобы выйти, введите «quit». rn» .
«Чтобы выключить сервер, введите «shutdown».rn» .
«Чтобы получить справочное сообщение, введите «help».rn» .
"php> ";
socket_write($msgsock, $msg, strlen($msg));
продолжать;
} /* 客户端输入命令不存在时提示信息 */
$talkback = "PHP: неизвестная команда '$buf'.rnphp> ";
socket_write($msgsock, $talkback, strlen($talkback));
эхо "$bufn";
} Пока (истина);
сокет_закрыть ($ msgsock);
} пока (истина);
/* 关闭Socket连接 */
сокет_закрыть ($ сокет);
?>