STREAM_SOCKET_PAIR(3) 1 STREAM_SOCKET_PAIR(3)
stream_socket_pair - Creates a pair of connected, indistinguishable socket streams
SYNOPSIS
array stream_socket_pair (int $domain, int $type, int $protocol)
DESCRIPTION
stream_socket_pair(3) creates a pair of connected, indistinguishable socket streams. This function is commonly used in IPC (Inter-Process
Communication).
PARAMETERS
o $domain
- The protocol family to be used: STREAM_PF_INET, STREAM_PF_INET6 or STREAM_PF_UNIX
o $type
- The type of communication to be used: STREAM_SOCK_DGRAM, STREAM_SOCK_RAW, STREAM_SOCK_RDM, STREAM_SOCK_SEQPACKET or
STREAM_SOCK_STREAM
o $protocol
- The protocol to be used: STREAM_IPPROTO_ICMP, STREAM_IPPROTO_IP, STREAM_IPPROTO_RAW, STREAM_IPPROTO_TCP or STREAM_IPPROTO_UDP
Note
Please consult the Streams constant list for further details on each constant.
RETURN VALUES
Returns an array with the two socket resources on success, or FALSE on failure.
CHANGELOG
+--------+---------------------------------------------------+
|Version | |
| | |
| | Description |
| | |
+--------+---------------------------------------------------+
| 5.3.0 | |
| | |
| | This function is now available on Windows plat- |
| | forms. |
| | |
+--------+---------------------------------------------------+
EXAMPLES
Example #1
A stream_socket_pair(3) example
This example shows the basic usage of stream_socket_pair(3) in Inter-Process Comunication.
<?php
$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
/* parent */
fclose($sockets[0]);
fwrite($sockets[1], "child PID: $pid
");
echo fgets($sockets[1]);
fclose($sockets[1]);
} else {
/* child */
fclose($sockets[1]);
fwrite($sockets[0], "message from child
");
echo fgets($sockets[0]);
fclose($sockets[0]);
}
?>
The above example will output something similar to:
child PID: 1378
message from child
PHP Documentation Group STREAM_SOCKET_PAIR(3)