-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathstream-socket-pair.xml
156 lines (143 loc) · 4.39 KB
/
stream-socket-pair.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 0c9c2dd669fe9395eaa73d487fbd160f9057429a Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<refentry xml:id="function.stream-socket-pair" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>stream_socket_pair</refname>
<refpurpose>
接続された、区別できないソケットストリームの組を作成する
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>array</type><type>false</type></type><methodname>stream_socket_pair</methodname>
<methodparam><type>int</type><parameter>domain</parameter></methodparam>
<methodparam><type>int</type><parameter>type</parameter></methodparam>
<methodparam><type>int</type><parameter>protocol</parameter></methodparam>
</methodsynopsis>
<para>
<function>stream_socket_pair</function> は、互いに接続されており区別できない
ソケットストリームの組を作成します。この関数は、一般に IPC
(Inter-Process Communication: プロセス間通信)で使用します。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>domain</parameter></term>
<listitem>
<para>
使用するプロトコルファミリー。<constant>STREAM_PF_INET</constant>、
<constant>STREAM_PF_INET6</constant> あるいは
<constant>STREAM_PF_UNIX</constant>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>type</parameter></term>
<listitem>
<para>
使用する接続の型。
<constant>STREAM_SOCK_DGRAM</constant>、
<constant>STREAM_SOCK_RAW</constant>、
<constant>STREAM_SOCK_RDM</constant>、
<constant>STREAM_SOCK_SEQPACKET</constant> あるいは
<constant>STREAM_SOCK_STREAM</constant>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>protocol</parameter></term>
<listitem>
<para>
使用するプロトコル。<constant>STREAM_IPPROTO_ICMP</constant>、
<constant>STREAM_IPPROTO_IP</constant>、
<constant>STREAM_IPPROTO_RAW</constant>、
<constant>STREAM_IPPROTO_TCP</constant> あるいは
<constant>STREAM_IPPROTO_UDP</constant>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<note>
<simpara>
各定数についての詳細な情報は
<link linkend="stream.constants">ストリーム定数の一覧</link>
を参照ください。
</simpara>
</note>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
成功した場合に 2 つのソケットリソースの配列、失敗した場合に &false; を返します。
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>stream_socket_pair</function> の例</title>
<para>
この例では、プロセス間通信に
<function>stream_socket_pair</function> を使用する基本的な方法を示します。
</para>
<programlisting role="php">
<![CDATA[
<?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]);
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
子プロセスの PID: 1378
子プロセスからのメッセージ
]]>
</screen>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->