stream_socket_client
stream_socket_client
Open Internet or Unix domain socket connection
**stream_socket_client** string $address int $error_code string $error_message $timeout int $flags $context
Initiates a stream or datagram connection to the destination specified
by . The type of socket created
is determined by the transport specified using standard URL formatting:
. For Internet Domain sockets
(AF_INET) such as TCP and UDP, the portion
of the parameter should consist of
a hostname or IP address followed by a colon and a port number. For Unix
domain sockets, the portion should point
to the socket file on the filesystem.
address``transport://target``target``address``target
Opmerking: > The stream will by default be opened in blocking mode. You can switch it to non-blocking mode by using .
stream_set_blocking
addressAddress to the socket to connect to.
error_codeWill be set to the system level error number if connection fails.
error_messageWill be set to the system level error message if the connection fails.
timeout
Number of seconds until the system call
should timeout. By default,
is used.
`connect()`default_socket_timeout> **Opmerking:** > This parameter only applies when not making asynchronous
connection attempts.
Opmerking: > To set a timeout for reading/writing data over the socket, use the , as the only applies while making connecting the socket.
stream_set_timeout``timeout
flags
Bitmask field which may be set to any combination of connection flags.
Currently the select of connection flags is limited to
(default),
and
.
STREAM_CLIENT_CONNECT``STREAM_CLIENT_ASYNC_CONNECT``STREAM_CLIENT_PERSISTENT
context
A valid context resource created with .
stream_context_create
On success a stream resource is returned which may
be used together with the other file functions (such as
, ,
, , and
), false on failure.
fgets``fgetss``fwrite``fclose``feof
On failure the and
arguments will be populated with the actual
system level error that occurred in the system-level
call. If the value returned in
is and the
function returned false, it is an indication that the error
occurred before the call. This is
most likely due to a problem initializing the socket. Note that
the and
arguments will always be passed by
reference.
error_code``error_message``connect()``error_code``0``connect()``error_code``error_message
Voorbeeld: example
<?php
$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
?>
Voorbeeld: Using UDP connection
Retrieving the day and time from the UDP service "daytime" (port 13) on localhost.
<?php
$fp = stream_socket_client("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);
}
?>
Waarschuwing: > UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable. The error will only become apparent when you read or write data to/from the socket. The reason for this is because UDP is a "connectionless" protocol, which means that the operating system does not try to establish a link for the socket until it actually needs to send or receive data.
Opmerking: > Depending on the environment, the Unix domain or the optional connect timeout may not be available. A list of available transports can be retrieved using . See for a list of built in transports.
stream_get_transports
stream_socket_server``stream_set_blocking``stream_set_timeout``stream_select``fgets``fgetss``fwrite``fclose``feof