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
.