函数名称:stream_socket_accept()
函数适用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
函数描述:stream_socket_accept()函数接受一个通过stream_socket_server()函数创建的socket连接,并返回一个新的socket连接用于与客户端通信。
语法:resource stream_socket_accept ( resource $server_socket [, float $timeout = ini_get("default_socket_timeout") [, string &$peername ]] )
参数:
- $server_socket:必需。通过stream_socket_server()函数创建的socket资源。
- $timeout:可选。指定等待客户端连接的超时时间,单位为秒,默认值为ini_get("default_socket_timeout"),即php.ini中默认的超时时间。
- $peername:可选。用于存储客户端的IP地址和端口号的字符串变量。
返回值:如果成功接受了客户端连接,则返回一个新的socket资源,用于与客户端通信。如果出错,则返回false。
示例: <?php // 创建socket服务器 $server = stream_socket_server('tcp://127.0.0.1:8080', $errno, $errstr);
if (!$server) { echo "无法创建socket服务器:$errstr ($errno)"; } else { echo "等待客户端连接...\n";
// 接受客户端连接
$client = stream_socket_accept($server);
if (!$client) {
echo "无法接受客户端连接";
} else {
// 与客户端通信
$message = "欢迎连接到服务器";
fwrite($client, $message);
// 读取客户端发送的数据
$data = fread($client, 1024);
echo "接收到客户端数据:$data";
// 关闭客户端连接
fclose($client);
}
// 关闭服务器
fclose($server);
} ?> 以上示例中,首先使用stream_socket_server()函数创建了一个socket服务器,并绑定到本地的8080端口。然后使用stream_socket_accept()函数等待客户端连接,并返回一个新的socket资源用于与客户端通信。在与客户端通信过程中,使用fwrite()函数向客户端发送欢迎消息,并使用fread()函数读取客户端发送的数据。最后,使用fclose()函数关闭客户端连接和服务器连接。