在PHP编程中,stream_socket_server函数是用于创建一个基于流的服务器套接字的强大工具。它允许程序监听某个网络端口,等待客户端连接,并处理这些连接。相比传统的sock_create和sock_bind等函数,stream_socket_server提供了更高层次的封装,简化了网络服务的搭建过程。
stream_socket_server是PHP的一个内置函数,用于创建一个服务器套接字,监听指定的地址和端口。它返回一个流资源,这个资源可以用来接受客户端连接。这个函数支持多种协议,包括TCP、UDP以及Unix域套接字。
$server = stream_socket_server("tcp://gitbox.net:8080", $errno, $errstr);
if (!$server) {
echo "无法创建服务器: $errstr ($errno)\n";
} else {
echo "服务器创建成功,正在监听端口8080\n";
}
地址参数:通常是协议类型(如tcp、udp)后接://和IP地址及端口号的组合。例如,tcp://gitbox.net:8080表示TCP协议监听gitbox.net主机的8080端口。
错误号参数:传入变量,用于捕获错误代码。
错误字符串参数:传入变量,用于捕获错误信息。
以下示例展示了一个简单的TCP服务器,监听本机8080端口,接收客户端连接,读取数据,并返回响应:
<?php
$address = "tcp://gitbox.net:8080";
$server = stream_socket_server($address, $errno, $errstr);
if (!$server) {
die("服务器启动失败: $errstr ($errno)\n");
}
echo "服务器已启动,监听 $address\n";
while ($conn = stream_socket_accept($server)) {
$request = fread($conn, 1024);
echo "收到请求: $request\n";
$response = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello from PHP server!";
fwrite($conn, $response);
fclose($conn);
}
fclose($server);
?>
使用stream_socket_accept阻塞等待客户端连接。
一旦有连接,读取客户端数据,进行简单处理后响应。
服务器可持续运行,处理多个请求。
创建简单的HTTP服务器
实现自定义的网络协议服务器
做为Socket通信的后端服务