set_time_limit(10);$commonprotocol = getprotobyname(tcp);$socket = socket_create(af_inet, sock_stream, $commonprotocol);if ($socket) {$result = socket_bind($socket, 'localhost', 1337);if ($result) { $result = socket_listen($socket, 5); if ($result) { echo 监听成功; }}}else{echo 监听失败;}do {if (($msgsock = socket_accept($socket))) { /* 发送提示信息给连接上来的用户 */ $msg = ==========================================\r\n . welcome to the php test server. \r\n\r\n . to quit, type 'quit'. \r\n . to shut down the server type 'shutdown'.\r\n . to get help message type 'help'.\r\n . ==========================================\r\n . php>;}socket_write($msgsock, $msg, strlen($msg));do { $buf = socket_read($msgsock, 2048, php_binary_read); if (false === $buf) { echo socket_read() failed: reason: . socket_strerror($result) . \n; break 2; } if (!$buf = trim($buf)) { continue; } /* 客户端输入quit命令时候关闭客户端连接 */ if ($buf == 'q') { break; } /* 客户端输入shutdown命令时候服务端和客户端都关闭 */ if ($buf == 'shutdown') { socket_close($msgsock); break 2; } /* 客户端输入help命令时候输出帮助信息 */ if ($buf == 'h') { $msg = php server help message \r\n\r\n . to quit, type 'quit'. \r\n . to shut down the server type 'shutdown'.\r\n . to get help message type 'help'.\r\n . php> ; socket_write($msgsock, $msg, strlen($msg)); continue; } /* 客户端输入命令不存在时提示信息 */ $talkback = php: unknow command '$buf'.\r\nphp> ; socket_write($msgsock, $talkback, strlen($talkback)); echo $buf\n;} while (true);socket_close($msgsock);}while (true);/* 关闭socket连接 */socket_close($socket);
复制代码
