<?php 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); ?> |