<?php
// socket_server.php
$host = "127.0.0.1"; $port = 1234;
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
socket_listen($socket, 3) or die("Could not set up socket listener\n");
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
$input = socket_read($spawn, 1024) or die("Could not read input\n");
$input = trim($input);
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen($output)) or die("Could not write output\n");
socket_close($spawn); socket_close($socket);
?>
運行:php.exe socket_server.php,然後 telnet 127.0.0.1 1234 測試。
<?php
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
socket_bind($socket, 'localhost', 1337);
socket_listen($socket);
$buffer = "NO DATA";
while (true) {
$connection = socket_accept($socket);
echo "Socket connected\r\n";
if ($buffer !== "") {
echo "Something is in the buffer...sending data...\r\n";
socket_write($connection, $buffer . "\r\n");
echo "Wrote to socket\r\n";
} else { echo "No Data in the buffer\r\n"; }
while ($data = socket_read($connection, 1024, PHP_NORMAL_READ)) {
$buffer = $data;
socket_write($connection, "Information Received\r\n");
echo "Buffer: " . $buffer . "\r\n";
}
socket_close($connection);
echo "Closed the socket\r\n\r\n";
}
?>
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connection = socket_connect($socket, 'localhost', 1337);
while ($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) {
if ($buffer == "NO DATA") { echo "NO DATA
"; break; }
else { echo "Buffer Data: " . $buffer . "
"; }
}
echo "Writing to Socket
";
if (!socket_write($socket, "SOME DATA\r\n")) { echo "Write failed
"; }
while ($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) {
echo "Data sent was: SOME DATA
Response was:" . $buffer . "
";
}
echo "Done Reading from Socket
";
?>
此示例展示了 Socket 的基本生命周期:創建、綁定、監聽、接受、讀寫、關閉。