2012-01-23 13 views

回答

6

我認爲它不可能使用fsockopen。但它可能在curl,fopenstream功能。你需要的是stream_socket_client()函數。

以下是實現它的一些方法。

  1. 可以在fopen函數家庭和流功能的家庭中使用使用上下文參數。看例子。

    $opts = array(
        'socket' => array(
         'bindto' => '192.168.0.100:0', 
        ), 
    ); 
    // create the context... 
    $context = stream_context_create($opts); 
    $contents = fopen('http://www.example.com', 'r', false, $context); 
    

    而且stream_socket_client

    $fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $opts); 
    if (!$fp) { 
        echo "$errstr ($errno)<br />\n"; 
    } else { 
        fwrite($fp, "GET/HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n"); 
        while (!feof($fp)) { 
         echo fgets($fp, 1024); 
        } 
        fclose($fp); 
    } 
    
  2. 使用socket_bind。 PHP.NET有一個簡單的例子here

+0

非常感謝! 'stream_socket_client'允許保持其他代碼不變。 –

相關問題