男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

fsockopen

(PHP 4, PHP 5, PHP 7, PHP 8)

fsockopen打開(kāi)一個(gè)網(wǎng)絡(luò )連接或者一個(gè)Unix套接字連接

說(shuō)明

fsockopen(
    string $hostname,
    int $port = -1,
    int &$errno = ?,
    string &$errstr = ?,
    float $timeout = ini_get("default_socket_timeout")
): resource

初始化一個(gè)套接字連接到指定主機(hostname)。

PHP支持以下的套接字傳輸器類(lèi)型列表 所支持的套接字傳輸器(Socket Transports)列表。也可以通過(guò)stream_get_transports()來(lái)獲取套接字傳輸器支持類(lèi)型。

默認情況下將以阻塞模式開(kāi)啟套接字連接。當然你可以通過(guò)stream_set_blocking()將它轉換到非阻塞模式。

stream_socket_client()與之非常相似,而且提供了更加豐富的參數設置,包括非阻塞模式和提供上下文的的設置。

參數

hostname

如果安裝了OpenSSL,那么你也許應該在你的主機名地址前面添加訪(fǎng)問(wèn)協(xié)議ssl://或者是tls://,從而可以使用基于TCP/IP協(xié)議的SSL或者TLS的客戶(hù)端連接到遠程主機。

port

端口號。如果對該參數傳一個(gè)-1,則表示不使用端口,例如unix://。

errno

如果傳入了該參數,holds the system level error number that occurred in the system-level connect() call。

如果errno的返回值為0,而且這個(gè)函數的返回值為false,那么這表明該錯誤發(fā)生在套接字連接(connect())調用之前,導致連接失敗的原因最大的可能是初始化套接字的時(shí)候發(fā)生了錯誤。

errstr

錯誤信息將以字符串的信息返回。

timeout

設置連接的時(shí)限,單位為秒。

注意:

注意:如果你要對建立在套接字基礎上的讀寫(xiě)操作設置操作時(shí)間設置連接時(shí)限,請使用stream_set_timeout(),fsockopen()的連接時(shí)限(timeout)的參數僅僅在套接字連接的時(shí)候生效。

返回值

fsockopen()將返回一個(gè)文件句柄,之后可以被其他文件類(lèi)函數調用(例如:fgets(),fgetss(),fwrite(),fclose()還有feof())。如果調用失敗,將返回false。

錯誤/異常

如果主機(hostname)不可訪(fǎng)問(wèn),將會(huì )拋出一個(gè)警告級別(E_WARNING)的錯誤提示。

更新日志

版本 說(shuō)明
4.3.0 在win32系統上增加了對時(shí)限設置(timeout)參數的支持。
4.3.0 在TCP/IP協(xié)議的基礎上增加了SSL和TLS。

范例

示例 #1 fsockopen()的例子

<?php
$fp 
fsockopen("www.example.com"80$errno$errstr30);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$out "GET / HTTP/1.1\r\n";
    
$out .= "Host: www.example.com\r\n";
    
$out .= "Connection: Close\r\n\r\n";
    
fwrite($fp$out);
    while (!
feof($fp)) {
        echo 
fgets($fp128);
    }
    
fclose($fp);
}
?>

示例 #2 使用UDP連接

下面這個(gè)例子展示了怎么樣在自己的機器上通過(guò)UDP套接字連接(端口號13)來(lái)檢索日期和時(shí)間。

<?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($fp26);
    
fclose($fp);
}
?>

注釋

注意:

因為環(huán)境的不同,某些情況下在Unix套接字連接或者自定義的連接設置連接時(shí)限(timeout)可能不會(huì )生效。

警告

UDP套接字有些時(shí)候在即使遠程主機未知的情況,也能打開(kāi),并且不發(fā)生任何錯誤。只有當你通過(guò)該套接字進(jìn)行讀寫(xiě)的時(shí)候才會(huì )發(fā)現錯誤。之所以會(huì )這樣,是因為UDP是一個(gè)“非連接狀態(tài)”的協(xié)議,那么這就意味著(zhù)當前操作系統直到它(套接字)真正需要發(fā)送和接受數據的時(shí)候才會(huì )去嘗試為其去建立連接。

注意: 當指定數值型的 IPv6 地址(例如 fe80::1)時(shí)必須用方括號將 IP 圍起來(lái)——例如, tcp://[fe80::1]:80。

參見(jiàn)

男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站