diff --git a/reference/stream/constants.xml b/reference/stream/constants.xml index fd233f4d1b..827259f274 100644 --- a/reference/stream/constants.xml +++ b/reference/stream/constants.xml @@ -1,5 +1,5 @@ - +
&reftitle.constants; &extension.constants; @@ -85,6 +85,19 @@ should remain persistent between page loads. + + STREAM_SERVER_BIND + Tells a stream created with stream_socket_server + to bind to the specified target. Server sockets should always include this flag. + + + + STREAM_SERVER_LISTEN + Tells a stream created with stream_socket_server + and bound using the STREAM_SERVER_BIND flag to start + listening on the socket. Server sockets should always include this flag. + + diff --git a/reference/stream/functions/stream-socket-server.xml b/reference/stream/functions/stream-socket-server.xml new file mode 100644 index 0000000000..a9e8a587ca --- /dev/null +++ b/reference/stream/functions/stream-socket-server.xml @@ -0,0 +1,135 @@ + + + + + stream_socket_server + + Create an Internet or Unix domain server socket + + + + Description + + resourcestream_socket_server + stringlocal_socket + int&errno + string&errstr + intflags + resourcecontext + + + Creates a stream or datagram socket on the specified + local_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. + + flags is a bitmask field which may be set to any + combination of socket creation flags. The default value of flags is + STREAM_SERVER_BIND | STREAM_SERVER_LISTEN. + + + This function only creates a socket, to begin accepting connections + use stream_socket_accept. + + + 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, Unix domain sockets may not be available. + A list of available transports can be retrieved using + stream_get_transports. + + + stream_socket_server. + + <function>stream_socket_server</function> Example + +\n"; +} else { + while ($conn = stream_socket_accept($socket)) { + fputs ($conn, 'Thank you for connecting to my server. The local time is ' . date('n/j/Y g:i a') . "\n"); + fclose ($conn); + } + fclose($socket); +} +?> +]]> + + + The example below shows how to act as a time server which can respond + to time queries as shown in an example on stream_socket_client. + + Most systems require root access to create a server socket on + a port below 1024. + + + + Using UDP server sockets + +\n"; +} else { + while ($conn = stream_socket_accept($socket)) { + fwrite($conn, date("D M j H:i:s Y\r\n")); + fclose($conn); + } + fclose($socket); +} +?> +]]> + + + See also stream_socket_client, + stream_set_blocking, + stream_set_timeout, + fgets, + fgetss, fputs, + fclose, feof, and + the Curl extension. + + + + +