網路函式庫

fsockopen

(PHP3 , PHP4)

fsockopen ---  開啟InternetUnix網域socket連結

語法 : int fsockopen (string [udp://]hostname, int port [, int errno [, string errstr [, double timeout]]])

說明 : 

創始一個Internet或是Unix網域中的資料流連結(AF_INET,使用 TCP 或 UDP)。Internet網域,它將會開啟一個TCP socket連結到參數hostname,埠號為參數port,參數hostname可以是網域名稱或是IP位址。UDP連結,你需要明確的指出協定 : udp://hostname。Unix網域,參數hostname將會使用連結到socket的路徑,參數port必須設為0。非必需選項timeout可用來設定停止連結系統呼叫的秒數。

fsockopen( )傳回一個檔案指標,這可以和其它的函式一起使用,例如 : fgets( )fgetss( )fputs( )fclose( )feof( )

如果呼叫失敗,它將會傳回false並且如果有給予參數errno和errstr,它們將會指出發生在system-level connect( ) 呼叫的錯誤。如果傳回的errno為0而且此函式傳回false,表示錯誤發生在connect( )呼叫之前,注意 : 參數errno和errstr必須依照關係傳遞。

此函式會預設成擱置模式,您可使用set_socket_blocking( )設定成無擱置模式。

Example :

<?php

   $fp = fsockopen ("www.php.net", 80, &$errno, &$errstr, 30); 

   if (!$fp) { 

       echo "$errstr ($errno)<br>\n";

   } else { 

          fputs ($fp, "GET / HTTP/1.0\r\n\r\n"); 

          while (!feof($fp)) { 

                 echo fgets ($fp,128); 

          } 

          fclose ($fp); 

   }

?>

以下的範例顯示如何在你的機器上從UDP服務"daytime"(port 13)獲得日期和時間

<?php

   $fp = fsockopen("udp://127.0.0.1", 13, &$errno, &$errstr); 

   if (!$fp) { 

        echo "ERROR: $errno - $errstr<br>\n";

   } else { 

            fwrite($fp,"\n");

            echo fread($fp, 26);

            fclose($fp); 

   }

?>

參考 : pfsockopen( )


上一頁 首頁 下一頁