/* 监听Socket连接 */
+ f+ ]& P5 X6 @6 @+ P* { if (($ret = socket_listen($sock, 5)) < 0) {1 c9 w0 ^% ]- C" @+ s
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
0 }- B8 [4 R. U }# F& n$ d9 ?' h# j0 ^) V
/* 永远循环监接受用户连接 */
6 S0 F3 w, {/ l0 l do {
8 ^3 ~' |1 G1 g9 K9 ` if (($msgsock = socket_accept($sock)) < 0) {' L# h& e2 q! C
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
6 X8 ]' L5 }- W# Z C3 g break;1 `# J+ a+ m+ |! k/ o4 p/ u
}7 o( q# X- r" b1 z2 b: p
/* 发送提示信息给连接上来的用户 */
0 \5 o5 e% M5 F$ U' ~ $msg = "==========================================\r\n" .
. N" q6 U2 g2 K6 N, c! y z3 O " Welcome to the PHP Test Server. \r\n\r\n".! A( {) T( t1 ?
" To quit, type ’quit’. \r\n" .' f' i) Y: z2 t' g+ y1 N* x7 P# e: r, q1 ]
" To shut down the server type ’shutdown’.\r\n" .: f9 r$ U' T) r. j, o+ A
" To get help message type ’help’.\r\n" ./ ^' l4 D; B" v% [/ w/ R
"==========================================\r\n" . W0 c* K0 K3 i) s
"php> ";
+ u% M% u c3 S! k* S: |7 w8 R socket_write($msgsock, $msg, strlen($msg));
" d. K( W2 z) ^6 E do {8 P" e7 B5 n, B9 Z# a# l+ I. Y2 `. d
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {' H: g/ i% h1 [8 t/ E' [! C* i
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";" ^6 }8 k+ p/ I' O0 G% ~
break 2;1 t3 i6 O8 E$ y; _4 S6 b
}
0 z5 \- s- C$ v: T6 l7 G3 r/ g/ x if (!$buf = trim($buf)) {
, r9 Q3 w3 r' Y& T- B6 A2 ~* y continue;
3 k" A' u& n p8 N, ~/ _ }2 ]3 J6 K& `) l9 y( k3 p
/* 客户端输入quit命令时候关闭客户端连接 */
, r& R, D! C& t3 f2 Q5 v9 S' O if ($buf == ’quit’) {
! r3 y* q* D% L' G1 r1 t1 l break;
- D, ^. [" m$ n0 N& o8 }0 d4 M }
; a* ^4 c* V R5 y; `. ]0 K /* 客户端输入shutdown命令时候服务端和客户端都关闭 */
- S. s+ _" K* B1 i5 Q+ p! c if ($buf == ’shutdown’) {
7 T2 S9 u9 P$ M( o socket_close($msgsock);5 I% p% g' c2 c. L. ?
break 2;
. ^7 V4 A: A% J( d% i- r }1 K% _1 b! x0 x( C6 T: p0 [
/* 客户端输入help命令时候输出帮助信息 */# G, [$ P5 F! P
if ($buf == ’help’) {1 z. x( k6 o% z$ Y5 x0 Q
$msg = " PHP Server Help Message \r\n\r\n".
9 f# q7 ~' z1 R E. c7 s! ?5 m " To quit, type ’quit’. \r\n" .
) D( J: h) I! E- e1 C " To shut down the server type ’shutdown’.\r\n" .
7 F8 k9 R ^* U; Y" }5 g" v " To get help message type ’help’.\r\n" .
- q$ K$ {2 k# b" {; c5 L/ B& t "php> "; |