溫馨提示×

PHP stream_context_create和stream_socket_client如何配合

PHP
小樊
102
2024-07-05 14:50:22
欄目: 編程語言

stream_context_create函數(shù)用于創(chuàng)建并返回一個流上下文資源,可以在流操作函數(shù)中使用,比如stream_socket_client函數(shù)。stream_socket_client函數(shù)用于在給定的傳輸層協(xié)議和主機地址上打開一個套接字連接。

要配合使用這兩個函數(shù),可以先使用stream_context_create創(chuàng)建一個流上下文資源,然后將這個資源作為stream_socket_client函數(shù)的第三個參數(shù)傳入,以便在打開套接字連接時使用指定的上下文資源。

示例代碼如下:

// 創(chuàng)建流上下文資源
$context = stream_context_create(array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false
    )
));

// 打開套接字連接
$socket = stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);

if (!$socket) {
    echo "Connection failed: $errstr ($errno)";
} else {
    fwrite($socket, "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n");

    while (!feof($socket)) {
        echo fgets($socket, 1024);
    }

    fclose($socket);
}

在上面的示例中,我們創(chuàng)建了一個流上下文資源$context,關閉了SSL驗證以便在本地開發(fā)環(huán)境中測試,然后使用stream_socket_client函數(shù)打開一個與www.example.com的TCP連接,并發(fā)送一個HTTP GET請求。接著我們讀取響應內(nèi)容并關閉連接。

0