网路函数库

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( )


上一页 首页 下一页