函数名称:stream_socket_shutdown()
函数描述:stream_socket_shutdown() 函数关闭用 stream_socket_client() 或 stream_socket_server() 创建的套接字连接。
适用版本:PHP 4 >= 4.0.7, PHP 5, PHP 7
语法:bool stream_socket_shutdown(resource $stream, int $how)
参数:
- $stream:必需,一个有效的套接字资源,通常使用 stream_socket_client() 或 stream_socket_server() 创建。
- $how:必需,一个整数,用于指定关闭连接的方式。可选值有:
- STREAM_SHUT_RD:关闭读取
- STREAM_SHUT_WR:关闭写入
- STREAM_SHUT_RDWR:同时关闭读取和写入
返回值:成功时返回 true,失败时返回 false。
示例:
// 创建套接字连接
$socket = stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 30);
// 发送HTTP请求
$request = "GET / HTTP/1.1\r\n";
$request .= "Host: www.example.com\r\n";
$request .= "Connection: close\r\n\r\n";
fwrite($socket, $request);
// 关闭写入连接,继续读取服务器响应
stream_socket_shutdown($socket, STREAM_SHUT_WR);
// 读取服务器响应
$response = '';
while (!feof($socket)) {
$response .= fgets($socket);
}
// 关闭读取连接
stream_socket_shutdown($socket, STREAM_SHUT_RD);
// 关闭套接字连接
fclose($socket);
上述示例演示了如何使用 stream_socket_shutdown() 函数在发送HTTP请求后关闭写入连接,并继续读取服务器的响应。首先,使用 stream_socket_client() 函数创建套接字连接,然后发送HTTP请求并关闭写入连接。接着,使用 fgets() 函数循环读取服务器响应,直到结束。最后,关闭读取连接并关闭套接字连接。
请注意,示例中的关闭连接顺序是先关闭写入连接,再关闭读取连接。这是因为在HTTP请求中,客户端先发送请求,然后等待服务器响应。因此,我们首先关闭写入连接以告知服务器请求已发送完毕,然后继续读取服务器的响应。