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
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.
Note: For UDP sockets, you must use STREAM_SERVER_BIND as the
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
arguments are present they will be set to indicate the actual
system level error that occurred in the system-level
socket(), bind(), and
listen() calls. If the value returned in
errno is 0 and the
function returned FALSE, it is an indication that the error
occurred before the bind() call. This is
most likely due to a problem initializing the socket. Note that
errstr arguments will always be passed by
Example 1. Using TCP server sockets
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().
Note: Most systems require root access to create a server socket on a port below 1024.
Example 2. Using UDP server sockets
Note: When specifying a numerical IPv6 address (e.g. fe80::1) you must enclose the IP in square brackets. For example, tcp://[fe80::1]:80.