English | 简体中文 | 繁體中文
查询

stream_socket_enable_crypto()函数—用法及示例

「 在一个已经建立的socket连接上启用或禁用加密 」


函数名称:stream_socket_enable_crypto()

适用版本:PHP 5 >= 5.1.0, PHP 7

函数描述:stream_socket_enable_crypto()函数用于在一个已经建立的socket连接上启用或禁用加密。

语法:bool stream_socket_enable_crypto ( resource $stream , bool $enable , int $crypto_type [, resource $session_stream ] )

参数:

  • $stream:必需,表示已经建立的socket连接的资源句柄。
  • $enable:必需,表示是否启用加密。如果为true,则启用加密;如果为false,则禁用加密。
  • $crypto_type:必需,表示加密类型,可以是以下常量之一:
    • STREAM_CRYPTO_METHOD_ANY:默认值,使用任何可用的加密方法。
    • STREAM_CRYPTO_METHOD_SSLv2_CLIENT:SSLv2客户端加密。
    • STREAM_CRYPTO_METHOD_SSLv3_CLIENT:SSLv3客户端加密。
    • STREAM_CRYPTO_METHOD_SSLv23_CLIENT:SSLv2、SSLv3和TLSv1客户端加密。
    • STREAM_CRYPTO_METHOD_TLS_CLIENT:TLSv1客户端加密。
    • STREAM_CRYPTO_METHOD_SSLv2_SERVER:SSLv2服务器加密。
    • STREAM_CRYPTO_METHOD_SSLv3_SERVER:SSLv3服务器加密。
    • STREAM_CRYPTO_METHOD_SSLv23_SERVER:SSLv2、SSLv3和TLSv1服务器加密。
    • STREAM_CRYPTO_METHOD_TLS_SERVER:TLSv1服务器加密。
  • $session_stream:可选,表示用于加密会话的资源句柄。

返回值:如果成功启用或禁用加密,则返回true;否则返回false。

示例:

// 创建一个socket连接
$socket = stream_socket_client('tcp://www.example.com:443', $errno, $errstr, 30);

// 启用加密
if (stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
    echo "加密已成功启用!\n";
} else {
    echo "无法启用加密!\n";
}

// 发送加密的数据
fwrite($socket, "Hello, encrypted world!");

// 关闭加密
stream_socket_enable_crypto($socket, false);

// 发送非加密的数据
fwrite($socket, "Hello, world!");

// 关闭socket连接
fclose($socket);

在上面的示例中,我们首先使用stream_socket_client()函数创建一个与www.example.com的443端口的TCP连接。然后,我们使用stream_socket_enable_crypto()函数启用加密,并指定加密类型为TLS客户端加密。如果加密成功启用,则输出"加密已成功启用!",否则输出"无法启用加密!"。接下来,我们使用fwrite()函数发送加密的数据。然后,我们使用stream_socket_enable_crypto()函数禁用加密。最后,我们使用fwrite()函数发送非加密的数据,并关闭socket连接。

补充纠错
上一个函数: stream_socket_get_name()函数
下一个函数: stream_socket_client()函数
热门PHP函数
分享链接