您的位置:首页技术文章
文章详情页

PHP监听Socket

【字号: 日期:2024-02-20 18:28:52浏览:3作者:猪猪

<?phpset_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 = '==========================================rn' . 'Welcome to the PHP Test Server. rnrn' . 'To quit, type 'quit'. rn' . 'To shut down the server type 'shutdown'.rn' . 'To get help message type 'help'.rn' . '==========================================rn' . '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 rnrn' . ' To quit, type 'quit'. rn' . ' To shut down the server type 'shutdown'.rn' . ' To get help message type 'help'.rn' . 'php> '; socket_write($msgsock, $msg, strlen($msg)); continue; } /* 客户端输入命令不存在时提示信息 */ $talkback = 'PHP: unknow command '$buf'.rnphp> '; socket_write($msgsock, $talkback, strlen($talkback)); echo '$bufn';} while (true);socket_close($msgsock);}while (true);/* 关闭Socket连接 */socket_close($socket);?>

标签: PHP