Description
int fsockopen
(string [udp://]hostname, int port [, int
errno [, string
errstr [, double
timeout]]])
Initiates a stream connection in the Internet (AF_INET, using TCP
or UDP) or Unix (AF_UNIX) domain. For the Internet domain, it
will open a TCP socket connection to
hostname on port
port. hostname may
in this case be either a fully qualified domain name or an IP
address. For UDP connections, you need to explicitely specify the
the protocol: udp://hostname. For the
Unix domain, hostname will be used as the
path to the socket, port must be set to 0
in this case. The optional timeout can be
used to set a timeout in seconds for the connect system call.
Fsockopen() returns a file pointer which may
be used together with the other file functions (such as
fgets(), fgetss(),
fputs(), fclose(), and
feof()).
If the call fails, it will return false and if the optional
errno and errstr
arguments are present they will be set to indicate the actual
system level error that occurred on the system-level
connect() call. If the returned errno is 0 and
the function returned false, it is an indication that the error
occurred before the connect() call. This is
most likely due to a problem initializing the socket. Note that
the errno and
errstr arguments must be passed by
reference.
Depending on the environment, the Unix domain or the optional
connect timeout may not be available.
The socket will by default be opened in blocking mode. You can
switch it to non-blocking mode by using
socket_set_blocking().
Example 1. Fsockopen() Example
$fp = fsockopen ("www.php.net", 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);
}
|
|
The example below shows how to retrieve the day and time
from the UDP service "daytime" (port 13) in your own machine.
Example 2. Using UDP connection
<?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($fp, 26);
fclose($fp);
}
?>
|
|
See also:
pfsockopen()