fsockopen
(PHP3 , PHP4)
fsockopen --- 开启Internet或Unix网域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( )