Beschreibung:
int
fsockopen
( [string udp://hostname, int port [, int errno [, string errstr
[, double timeout]]]])
Öffnet
eine
Socket-Verbindung
zum
Internet
(
AF_INET
,
unter
Verwendung
von
TCP
oder
UDP
)
oder
unter
Unix
(AF_UNIX
)
.
Für
eine
Internet-Verbindung
wird
eine
TCP-Socket-Verbindung
zu
hostname
über
den
Port
port
hergestellt
.
Für
eine
UDP-Verbindung
müssen
Sie
das
Protokoll
udp
:
/
/hostname
explizit
angeben
.
Bei
einer
UNIX-Verbindung
wird
hostname
als
Socket-Pfad
interpretiert
,
port
muss
in
diesem
Fall
0
sein
.
Der
optionale
Parameter
timeout
kann
benutzt
werden
,
um
eine
Fehlerwartezeit
(
Timeout-Wert
)
für
den
Verbindungsaufbau
(in
Sekunden
)
zu
setzen
.
Die
Funktion
fsockopen(
)
gibt
einen
Zeiger
auf
eine
Datei
zurück
,
der
in
Verbindung
mit
anderen
Datei-Funktionen
(wie
z.B
.
fgets(
)
,
fgetss(
)
,
fputs(
)
,
fclose(
)
,
feof(
)
)
gebraucht
werden
kann
.
Wenn
der
Aufruf
der
Funktion
scheitert
,
gibt
er
FALSE
/
falsch
zurück
und
wenn
die
optionalen
errno
und
errstr
Argumente
vorhanden
sind
,
enthalten
sie
den
aktuellen
System-Fehler
,
der
beim
Aufruf
der
System-Funktion
connect(
)
Wenn
der
Aufruf
der
Funktion
scheitert
,
gibt
er
FALSE
/
falsch
zurück
und
wenn
die
optionalen
errno
und
errstr
Argumente
vorhanden
sind
,
enthalten
sie
den
aktuellen
System-Fehler
,
der
beim
Aufruf
der
System-Funktion
connect(
)
(Verbindungsaufbau
)
erscheint
bzw
.
passiert
ist
.
Wenn
die
erhaltene
errno
0
ist
und
die
Funktion
FALSE
/
falsch
zurück
gibt
,
ist
dies
ein
Hinweis
,
dass
der
Fehler
vor
dem
connect(
)
-Aufruf
geschah
.
Das
ist
ein
Problem
,
dass
häufig
mit
der
Initialisierung
des
Sockets
zusammen
hängt
.
Beachten
Sie
bitte
,
dass
das
errno
und
errstr
-Argument
als
Referenz
zu
übergeben
sind
.
Abhängig
von
der
vorhandenen
Umgebung
kann
die
Verbindung
zu
einer
UNIX-Domäne
oder
der
optionale
Verbindungsaufbau-Zeitfehler
nicht
zur
Verfügung
stehen
.
Voreingestellt
ist
der
Verbindungsaufbau
im
Block-Modus
.
Sie
können
dies
auf
Nicht-Block-Modus
ändern
,
indem
Sie
socket_set_blocking(
)
benutzen
.
Beispiel
1
.
fsockopen(
)
-Beispiel
:
?php
$fp
=
fsockopen
(
"www.example.com"
,
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)
;
}
?
|
|
Das folgende Beispiel zeigt, wie das Datum und die Zeit des
UDP-Service "daytime" (Port 13) von ihrer eigenen Maschine
empfangen werden kann:
Beispiel
2
.
Gebrauch
einer
UDP-Verbindung
:
?php
$fp
=
fsockopen(
"udp
:
/
/127.0.0.1"
,
13
,
$errno
;
$errstr)
;
if
(!$fp
)
{
echo
"Fehler
:
$errno
-
$errstr
br
\n"
;
}
else
{
fwrite($fp
,"\n")
;
echo
fread($fp
,
26)
;
fclose($fp)
;
}
?
|
|
Siehe auch:
pfsockopen()
,
socket_set_blocking()
,
socket_set_timeout()
,
fgets()
,
fgetss()
,
fputs()
,
fclose()
und
feof()
.