Create an Internet or Unix domain server socket
Syntax
stream_socket_server ( string $local_socket [, int &$errno [, string &$errstr [, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN [, resource $context ]]]] ) : resource
Parameters
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.
Depending on the environment, Unix domain sockets may not be available. A list of available transports can be retrieved using stream_get_transports(). See List of Supported Socket Transports for a list of bulitin transports.
errno
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 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 the errno and errstr arguments will always be passed by reference.
errstr
See errno description.
flags
A bitmask field which may be set to any combination of socket creation flags.
Note: For UDP sockets, you must use STREAM_SERVER_BIND as the flags parameter.
context
Return
Returns the created stream, or FALSE on error.
Examples
1 · local_socket
<? $transport = "tcp"; $host = "127.0.0.1"; $port = "1234"; $local_socket = $transport . "://" . $host . ":" . $port; $return = stream_socket_server($local_socket); if (!$return) { exit; } while ($socket = stream_socket_accept($return)) { $string = "local time: " . date('n/j/Y g:i a') . "\n"; fwrite($socket, $string); fclose($socket); } fclose($return); ?>
2 · errno
<? $transport = "tcp"; $host = "127.0.0.1"; $port = "1234"; $local_socket = $transport . "://" . $host . ":" . $port; $return = stream_socket_server($local_socket, $errno); if (!$return) { exit("$errno"); } while ($socket = stream_socket_accept($return)) { $string = "local time: " . date('n/j/Y g:i a') . "\n"; fwrite($socket, $string); fclose($socket); } fclose($return); ?>
3 · errstr
<? $transport = "tcp"; $host = "127.0.0.1"; $port = "1234"; $local_socket = $transport . "://" . $host . ":" . $port; $return = stream_socket_server($local_socket, $errno, $errstr); if (!$return) { exit("$errstr ($errno)"); } while ($socket = stream_socket_accept($return)) { $string = "local time: " . date('n/j/Y g:i a') . "\n"; fwrite($socket, $string); fclose($socket); } fclose($return); ?>
4 · flags
<? $transport = "tcp"; $host = "127.0.0.1"; $port = "1234"; $local_socket = $transport . "://" . $host . ":" . $port; $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN; $return = stream_socket_server($local_socket, $errno, $errstr, $flags); if (!$return) { exit("$errstr ($errno)"); } while ($socket = stream_socket_accept($return)) { $string = "local time: " . date('n/j/Y g:i a') . "\n"; fwrite($socket, $string); fclose($socket); } fclose($return); ?>
5 · context
<? $transport = "tcp"; $host = "127.0.0.1"; $port = "1234"; $local_socket = $transport . "://" . $host . ":" . $port; $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN; $context = stream_context_create(); $return = stream_socket_server($local_socket, $errno, $errstr, $flags, $context); if (!$return) { exit("$errstr ($errno)"); } while ($socket = stream_socket_accept($return)) { $string = "local time: " . date('n/j/Y g:i a') . "\n"; fwrite($socket, $string); fclose($socket); } fclose($return); ?>
6 · Return
<? $transport = "tcp"; $host = "127.0.0.1"; $port = "1234"; $local_socket = $transport . "://" . $host . ":" . $port; $return = stream_socket_server($local_socket); if (!$return) { exit; } echo $return; fclose($return); ?>
Resource id #3