Php/docs/function.stream-socket-pair

提供:Dev Guides
< Php
移動先:案内検索

stream_socket_pair

(PHP 5 >= 5.1.0, PHP 7)

stream_socket_pair 接続された、区別できないソケットストリームの組を作成する


説明

stream_socket_pair ( int $domain , int $type , int $protocol ) : array

stream_socket_pair() は、互いに接続されており区別できない ソケットストリームの組を作成します。この関数は、一般に IPC (Inter-Process Communication: プロセス間通信)で使用します。


パラメータ

domain
使用するプロトコルファミリー。STREAM_PF_INETSTREAM_PF_INET6 あるいは STREAM_PF_UNIX
type
使用する接続の型。 STREAM_SOCK_DGRAMSTREAM_SOCK_RAWSTREAM_SOCK_RDMSTREAM_SOCK_SEQPACKET あるいは STREAM_SOCK_STREAM
protocol
使用するプロトコル。STREAM_IPPROTO_ICMPSTREAM_IPPROTO_IPSTREAM_IPPROTO_RAWSTREAM_IPPROTO_TCP あるいは STREAM_IPPROTO_UDP

注意:

各定数についての詳細な情報は ストリーム定数の一覧 を参照ください。

返り値

成功した場合に 2 つのソケットリソースの配列、失敗した場合に false を返します。


例1 stream_socket_pair() の例

この例では、プロセス間通信に stream_socket_pair() を使用する基本的な方法を示します。


<?php$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);$pid     = pcntl_fork();if ($pid == -1) {     die('フォークできません');} else if ($pid) {     /* 親プロセス */    fclose($sockets[0]);    fwrite($sockets[1], "子プロセスの PID: $pid\n");    echo fgets($sockets[1]);    fclose($sockets[1]);} else {    /* 子プロセス */    fclose($sockets[1]);    fwrite($sockets[0], "子プロセスからのメッセージ\n");    echo fgets($sockets[0]);    fclose($sockets[0]);}?>

上の例の出力は、 たとえば以下のようになります。


子プロセスの PID: 1378
子プロセスからのメッセージ