fsockopen

fsockopen -- Stellt eine Internet- oder Unix-Domain-Socket-Verbindung her

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() .