fsockopen

(PHP 4, PHP 5, PHP 7)

fsockopen锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟接伙拷锟斤拷一锟斤拷Unix锟阶斤拷锟斤拷锟斤拷锟斤拷

说锟斤拷

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

锟斤拷始锟斤拷一锟斤拷锟阶斤拷锟斤拷锟斤拷锟接碉拷指锟斤拷锟斤拷锟斤拷锟斤拷hostname锟斤拷锟斤拷

PHP支锟斤拷锟斤拷锟铰碉拷锟阶斤拷锟街达拷锟斤拷锟斤拷锟斤拷锟斤拷锟叫憋拷 锟斤拷支锟街碉拷锟阶斤拷锟街达拷锟斤拷锟斤拷锟斤拷Socket Transports锟斤拷锟叫憋拷锟斤拷也锟斤拷锟斤拷通锟斤拷stream_get_transports()锟斤拷锟斤拷取锟阶斤拷锟街达拷锟斤拷锟斤拷支锟斤拷锟斤拷锟酵★拷

默锟斤拷锟斤拷锟斤拷陆锟斤拷锟斤拷锟斤拷锟侥J斤拷锟斤拷锟斤拷捉锟斤拷锟斤拷锟斤拷印锟斤拷锟饺伙拷锟斤拷锟斤拷通锟斤拷stream_set_blocking()锟斤拷锟斤拷转锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷模式锟斤拷

stream_socket_client()锟斤拷之锟角筹拷锟斤拷锟狡o拷锟斤拷锟斤拷锟结供锟剿革拷锟接丰富锟侥诧拷锟斤拷锟斤拷锟矫o拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷模式锟斤拷锟结供锟斤拷锟斤拷锟侥的碉拷锟斤拷锟矫★拷

锟斤拷锟斤拷

hostname

锟斤拷锟斤拷锟阶帮拷锟�OpenSSL锟斤拷锟斤拷么锟斤拷也锟斤拷应锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟街非帮拷锟斤拷锟接凤拷锟斤拷协锟斤拷ssl://锟斤拷锟斤拷锟斤拷tls://锟斤拷锟接讹拷锟斤拷锟斤拷使锟矫伙拷锟斤拷TCP/IP协锟斤拷锟絊SL锟斤拷锟斤拷TLS锟侥客伙拷锟斤拷锟斤拷锟接碉拷远锟斤拷锟斤拷锟斤拷锟斤拷

port

锟剿口号★拷锟斤拷锟斤拷愿貌锟斤拷锟斤拷锟揭伙拷锟�-1锟斤拷锟斤拷锟绞撅拷锟绞癸拷枚丝冢锟斤拷锟斤拷锟�unix://锟斤拷

errno

锟斤拷锟斤拷锟斤拷锟斤拷烁貌锟斤拷锟斤拷锟絟olds the system level error number that occurred in the system-level connect() call锟斤拷

锟斤拷锟�errno锟侥凤拷锟斤拷值为0锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷姆锟斤拷锟街滴�FALSE锟斤拷锟斤拷么锟斤拷锟斤拷锟斤拷么锟斤拷锟斤拷锟斤拷锟斤拷捉锟斤拷锟斤拷锟斤拷樱锟�connect()锟斤拷锟斤拷锟斤拷之前锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷失锟杰碉拷原锟斤拷锟斤拷锟侥匡拷锟斤拷锟角筹拷始锟斤拷锟阶斤拷锟街碉拷时锟斤拷锟斤拷锟剿达拷锟斤拷

errstr

锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷息锟斤拷锟截★拷

timeout

锟斤拷锟斤拷锟斤拷锟接碉拷时锟睫o拷锟斤拷位为锟诫。

Note:

注锟解:锟斤拷锟斤拷锟揭拷越锟斤拷锟斤拷锟斤拷捉锟斤拷只锟斤拷锟斤拷系亩锟叫达拷锟斤拷锟斤拷锟斤拷貌锟斤拷锟绞憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞憋拷蓿锟斤拷锟绞癸拷锟�stream_set_timeout()锟斤拷fsockopen()锟斤拷锟斤拷锟斤拷时锟睫o拷timeout锟斤拷锟侥诧拷锟斤拷锟斤拷锟斤拷锟斤拷锟阶斤拷锟斤拷锟斤拷锟接碉拷时锟斤拷锟斤拷效锟斤拷

锟斤拷锟斤拷值

fsockopen()锟斤拷锟斤拷锟斤拷一锟斤拷锟侥硷拷锟斤拷锟斤拷锟街拷锟斤拷锟皆憋拷锟斤拷锟斤拷锟侥硷拷锟洁函锟斤拷锟斤拷锟矫o拷锟斤拷锟界:fgets()锟斤拷fgetss()锟斤拷fwrite()锟斤拷fclose()锟斤拷锟斤拷feof()锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞э拷埽锟斤拷锟斤拷锟斤拷锟�FALSE锟斤拷

锟斤拷锟斤拷锟届常

锟斤拷锟斤拷锟斤拷锟斤拷锟�hostname锟斤拷锟斤拷锟缴凤拷锟绞o拷锟斤拷锟斤拷锟阶筹拷一锟斤拷锟斤拷锟芥级锟斤拷E_WARNING锟斤拷锟侥达拷锟斤拷锟斤拷示锟斤拷

锟斤拷锟斤拷锟斤拷志

锟芥本 说锟斤拷
4.3.0 锟斤拷win32系统锟斤拷锟斤拷锟斤拷锟剿讹拷时锟斤拷锟斤拷锟矫o拷timeout锟斤拷锟斤拷锟斤拷锟斤拷支锟街★拷
4.3.0 锟斤拷TCP/IP协锟斤拷幕锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟絊SL锟斤拷TLS锟斤拷

锟斤拷锟斤拷

Example #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);
}
?>

Example #2 使锟斤拷UDP锟斤拷锟斤拷

锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟秸故撅拷锟斤拷锟矫达拷锟斤拷锟斤拷约锟斤拷幕锟斤拷锟斤拷锟酵拷锟経DP锟阶斤拷锟斤拷锟斤拷锟接o拷锟剿口猴拷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($fp26);
    
fclose($fp);
}
?>

注锟斤拷

Note:

锟斤拷为锟斤拷锟斤拷锟侥诧拷同锟斤拷某些锟斤拷锟斤拷锟斤拷锟経nix锟阶斤拷锟斤拷锟斤拷锟接伙拷锟斤拷锟皆讹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞憋拷蓿锟�timeout锟斤拷锟斤拷锟杰诧拷锟斤拷锟斤拷效锟斤拷

Warning

UDP锟阶斤拷锟斤拷锟斤拷些时锟斤拷锟节硷拷使远锟斤拷锟斤拷锟斤拷未知锟斤拷锟斤拷锟斤拷锟揭诧拷艽蚩锟斤拷锟斤拷也锟斤拷锟斤拷锟斤拷魏未锟斤拷锟街伙拷械锟斤拷锟酵拷锟斤拷锟斤拷捉锟斤拷纸锟斤拷卸锟叫达拷锟绞憋拷锟脚会发锟街达拷锟斤拷之锟斤拷锟皆伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷为UDP锟斤拷一锟斤拷"锟斤拷锟斤拷锟斤拷状态"锟斤拷协锟介,锟斤拷么锟斤拷锟斤拷锟轿讹拷诺锟角帮拷锟斤拷锟较低持憋拷锟斤拷锟斤拷锟斤拷捉锟斤拷郑锟斤拷锟斤拷锟斤拷锟揭拷锟斤拷秃徒锟斤拷锟斤拷锟斤拷莸锟绞憋拷锟脚伙拷去锟斤拷锟斤拷为锟斤拷去锟斤拷锟斤拷锟斤拷锟接★拷

Note: 锟斤拷指锟斤拷锟斤拷值锟酵碉拷 IPv6 锟斤拷址锟斤拷锟斤拷锟斤拷 fe80::1锟斤拷时锟斤拷锟斤拷锟矫凤拷锟斤拷锟脚斤拷 IP 围锟斤拷锟斤拷——锟斤拷锟界, tcp://[fe80::1]:80锟斤拷

锟轿硷拷

  • pfsockopen() - 锟斤拷一锟斤拷锟街久碉拷锟斤拷锟斤拷锟斤拷锟接伙拷锟斤拷Unix锟阶斤拷锟斤拷锟斤拷锟接★拷
  • stream_socket_client() - Open Internet or Unix domain socket connection
  • stream_set_blocking() - 为锟斤拷源锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷模式
  • stream_set_timeout() - Set timeout period on a stream
  • fgets() - 锟斤拷锟侥硷拷指锟斤拷锟叫讹拷取一锟斤拷
  • fgetss() - 锟斤拷锟侥硷拷指锟斤拷锟叫讹拷取一锟叫诧拷锟斤拷锟剿碉拷 HTML 锟斤拷锟�
  • fwrite() - 写锟斤拷锟侥硷拷锟斤拷锟缴帮拷全锟斤拷锟节讹拷锟斤拷锟斤拷锟侥硷拷锟斤拷
  • fclose() - 锟截憋拷一锟斤拷锟窖打开碉拷锟侥硷拷指锟斤拷
  • feof() - 锟斤拷锟斤拷锟侥硷拷指锟斤拷锟角凤拷锟斤拷锟侥硷拷锟斤拷锟斤拷锟斤拷位锟斤拷
  • socket_connect() - 锟斤拷锟斤拷一锟斤拷锟阶斤拷锟斤拷锟斤拷锟斤拷
  • The Curl extension