fsockopen

fsockopen -- Otevře socketové spojení v internetové nebo unixové doméně.

Popis

int fsockopen ( string hostname, int port [, int errno [, string errstr [, float timeout]]])

Iniciuje proudové spojení v internetové ( AF_INET , za použití TCP nebo UDP ) nebo unixové (AF_UNIX ) doméně . Pro internetovou doménu otevře TCP kanál na stroj hostname na port port . hostname v takovém případě může být plně určené doménové jméno nebo IP adresa . Pro spojení UDP musíte explicitně specifikovat protokol předřazením ' udp : / / ' před hostname . V unixové doméně se hostname použije jako cesta k socketu port se pak musí nastavit na 0 . Nepovinný parametr timeout se může použít k nastavení time-outu pro systémové volání connect .

Od PHP 4.3.0 , pokud jste PHP zkompilovali s podporou OpenSSL , můžete před hostname předřadit ' ssl : / / ' nebo ' tls : / / ' pro použití SSL nebo TSL spojení na vzdálený stroj přes TCP / IP .

fsockopen( ) vrací deskriptor souboru , který lze použít s jinými souborovými funkcemi (např . fgets( ) , fgetss( ) , fputs( ) , fclose( ) a feof( ) ) .

Pokud volání selže , vrací funkce FALSE , a pokud jsou přítomny nepovinné parametry errno a errstr , budou nastaveny na aktuální chybovou úroveň v systémovém volání connect( ) . Je-li vrácená hodnota v errno rovna 0 a funkce vrátila FALSE , znamená to , že chyba nastala před voláním connect( ) . Nejčastěji je to kvůli problému při inicializaci socketu . Uvědomte si , že argumenty errno a errstr se vždy předávají odkazem .

V závislosti na prostředí nemusí být k dispozici unixová doména nebo volitelný parametr timeout .

Socket se implicitně otevře v blokujícím režimu . Do neblokujícího režimu ho můžete přepnout použitím socket_set_blocking( ) .

Příklad 1 . fsockopen( ) Příklad




Další (níže uvedený) příklad ukazuje, jak získat datum a čas z UDP služby "daytime" (port 13) na vašem vlastním počítači.

Příklad 2 . Použití UDP spojení

 
?php

 
$fp

 
=

 
fsockopen(

 
"udp

 
:

 
/

 
/127.0.0.1"

 
,

 
13

 
,

 
$errno

 
,

 
$errstr)

 
;

 
if

 
(!$fp

 
)

 
{

 
echo

 
"CHYBA

 
:

 
$errno

 
-

 
$errstr

 
br

 
\n"

 
;

 
}

 
else

 
{

 
fwrite($fp

 
,"\n")

 
;

 
echo

 
fread($fp

 
,

 
26)

 
;

 
fclose($fp)

 
;

 
}

 
?



Poznámka : Parametr timeout by zaveden v PHP 3.0.9 a podpora UDP v PHP 4 .

Viz také pfsockopen() , socket_set_blocking() , socket_set_timeout() , fgets() , fgetss() , fputs() , fclose() , feof() a rozšíření Curl .