<?php
set_time_limit(10);
$commonProtocol = getprotobyname("tcp");
$socket =ソケット_create(AF_INET, SOCK_STREAM, $commonProtocol);
if ($socket) {
$result =ソケットバインド($socket, 'localhost', 1337);
if ($result) {
$result = ソケットリッスン($socket, 5);
if ($result) {
エコー「监听成功」;
}
}
}それ以外{
エコー「监听失败」;
}
する {
if (($msgsock =ソケット_accept($socket))) { /* 送信提案情報给接続上に来るユーザ */
$msg = "==========================================rn 「。」
「PHP テスト サーバーへようこそ。 rnrn」 。
"終了するには、「quit」と入力してください。 rn" 。
"サーバーをシャットダウンするには、「shutdown」と入力します。rn" 。
"ヘルプ メッセージを表示するには、「help」と入力してください。rn" 。
"==========================================rn" 。
"php>";
ソケット_ライト($msgsock, $msg, strlen($msg))
;
する {
$buf =ソケット_読み取り($msgsock, 2048, PHP_BINARY_READ);
if (false === $buf) {
echo "socket_read() が失敗しました: 理由: " 。ソケット_strerror($result) 。 "n";
休憩2;
}
if (!$buf = トリム($buf)) {
続く;
} /* 客端输入力quitコマンド時候关闭客端连接続 */
if ($buf == 'q') {
壊す;
} /* ゲスト户端入力shutdown コマンド時候サービス务端とゲスト户端都关闭 */
if ($buf == 'シャットダウン') {
ソケットクローズ($msgsock);
休憩2;
} /* 客端输入ヘルプコマンド時候输出帮助信息 */
if ($buf == 'h') {
$msg = "PHP サーバーのヘルプ メッセージ rnrn" 。
" 終了するには、「quit」と入力します。rn" .
" サーバーをシャットダウンするには、「shutdown」と入力します。rn" 。
" ヘルプ メッセージを表示するには、「help」と入力します。rn" 。
"php> ";
ソケット書き込み($msgsock, $msg, strlen($msg));
続く;
} /* 客端输入力コマンドが存在しない場合のヒント情報 */
$talkback = "PHP: 不明なコマンド '$buf'。rnphp> ";
socket_write($msgsock, $talkback, strlen($talkback));
エコー "$bufn";
while (true);
ソケットクローズ($msgsock);
}while (true);
/* 关闭ソケット接続 */
ソケットクローズ($ソケット);
?>