diff --git a/reference/stream/constants.xml b/reference/stream/constants.xml index 54e9ffec48..fd233f4d1b 100644 --- a/reference/stream/constants.xml +++ b/reference/stream/constants.xml @@ -1,5 +1,5 @@ - +
&reftitle.constants; &extension.constants; @@ -73,6 +73,18 @@ should not raise any errors. + + STREAM_CLIENT_ASYNC_CONNECT + Open client socket asynchronously. Used with + stream_socket_client. + + + + STREAM_CLIENT_PERSISTENT + Client socket opened with stream_socket_client + should remain persistent between page loads. + + diff --git a/reference/stream/functions/stream-get-transports.xml b/reference/stream/functions/stream-get-transports.xml new file mode 100644 index 0000000000..9da1b3c6b3 --- /dev/null +++ b/reference/stream/functions/stream-get-transports.xml @@ -0,0 +1,70 @@ + + + + + stream_get_transports + Retrieve list of registered socket transports + + + Description + + arraystream_get_transports + + + + Returns an indexed array containing the name of all socket transports + available on the running system. + + + + Using <function>stream_get_transports</function> + + tcp + [1] => udp + [2] => unix + [3] => udg +) + */ +?> +]]> + + + + + See also + stream_get_filters, and + stream_get_wrappers + + + + + diff --git a/reference/stream/functions/stream-socket-client.xml b/reference/stream/functions/stream-socket-client.xml new file mode 100644 index 0000000000..0022b8422a --- /dev/null +++ b/reference/stream/functions/stream-socket-client.xml @@ -0,0 +1,157 @@ + + + + + stream_socket_client + + Open Internet or Unix domain socket connection + + + + Description + + resourcestream_socket_client + stringremote_socket + int&errno + string&errstr + floattimeout + intflags + resourcecontext + + + Initiates a stream or datagram connection to the destination specified + by remote_socket. The type of socket created + is determined by the transport specified using standard url formatting: + transport://target. For Internet Domain sockets + (AF_INET) such as TCP and UDP, the target portion + of the remote_socket parameter should consist of + a hostname or IP address followed by a colon and a port number. For Unix + Domain sockets, the target portion should point + to the socket file on the filesystem. + + The optional timeout can be used to + set a timeout in seconds for the connect system call. + + flags is a bitmask field which may be set to any + combination of connection flags. Currently the selection of connection + flags is limited to STREAM_CLIENT_ASYNC_CONNECT and + STREAM_CLIENT_PERSISTENT. + + + + If you need to set a timeout for reading/writing data over the socket, + use stream_set_timeout, as the timeout + parameter to stream_socket_client only applies while + connecting the socket. + + + + stream_socket_client returns a + stream resource 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 in the system-level + connect() call. If the value returned in + 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 will always be passed by + reference. + + + 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 stream_get_transports. + + + The stream will by default be opened in blocking mode. You can + switch it to non-blocking mode by using + stream_set_blocking. + + <function>stream_socket_client</function> Example + +\n"; +} else { + fputs ($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); +} +?> +]]> + + + The example below shows how to retrieve the day and time + from the UDP service "daytime" (port 13) in your own machine. + + Using UDP connection + +\n"; +} else { + fwrite($fp,"\n"); + echo fread($fp, 26); + fclose($fp); +} +?> +]]> + + + + + 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. + + + See also stream_socket_server, + stream_set_blocking, + stream_set_timeout, + fgets, + fgetss, fputs, + fclose, feof, and + the Curl extension. + + + + +