stream_socket_pair() creates a pair of connected, indistinguishable socket streams. This function is commonly used in IPC (Inter-Process Communication).
The protocol family to be used: STREAM_PF_INET
, STREAM_PF_INET6
or STREAM_PF_UNIX
The type of communication to be used: STREAM_SOCK_DGRAM
, STREAM_SOCK_RAW
, STREAM_SOCK_RDM
, STREAM_SOCK_SEQPACKET
or STREAM_SOCK_STREAM
The protocol to be used: STREAM_IPPROTO_ICMP
, STREAM_IPPROTO_IP
, STREAM_IPPROTO_RAW
, STREAM_IPPROTO_TCP
or STREAM_IPPROTO_UDP
Returns an array with the two socket resources on success, or FALSE
on failure.
This function is now available on Windows platforms.
This example shows the basic usage of stream_socket_pair() 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\n"); echo fgets($sockets[1]); fclose($sockets[1]); } else { /* child */ fclose($sockets[1]); fwrite($sockets[0], "message from child\n"); echo fgets($sockets[0]); fclose($sockets[0]); } ?>
The above example will output something similar to:
child PID: 1378 message from child
Please login to continue.