-
Notifications
You must be signed in to change notification settings - Fork 82
Expand file tree
/
Copy pathsocket-write.xml
More file actions
149 lines (142 loc) · 4.84 KB
/
socket-write.xml
File metadata and controls
149 lines (142 loc) · 4.84 KB
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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 2ca1058473429d338de6eb773f268fc18a71d2f9 Maintainer: hirokawa Status: ready -->
<!-- CREDITS: takagi -->
<refentry xml:id="function.socket-write" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>socket_write</refname>
<refpurpose>ソケットに書き込む</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>socket_write</methodname>
<methodparam><type>Socket</type><parameter>socket</parameter></methodparam>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>length</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
関数 <function>socket_write</function> は、
<parameter>data</parameter> の内容をソケット
<parameter>socket</parameter> に書き込みます。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>socket</parameter></term>
<listitem>
<para>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>data</parameter></term>
<listitem>
<para>
書き込まれるバッファ。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>length</parameter></term>
<listitem>
<para>
オプションのパラメータ <parameter>length</parameter> で、
ソケットに書き込むバイト数を指定することが可能です。
この値が <parameter>data</parameter> より大きい場合、自動的に <parameter>data</parameter> のサイズに切り詰められます。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
ソケットへの書き込みに成功したデータのバイト数を返します。&return.falseforfailure;。
エラーコードは <function>socket_last_error</function>
を用いて取得することができ、この値を <function>socket_strerror</function>
に渡すことでエラー情報を文字列で取得可能です。
</para>
<note>
<para>
<function>socket_write</function> がゼロを返すことも十分ありえます。
これは、書き込むデータが存在しなかったことを意味します。
エラーをチェックするために &false; かどうかを調べる際には、必ず
<literal>===</literal> 演算子を使用しましょう。
</para>
</note>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&sockets.changelog.socket-param;
<row>
<entry>8.0.0</entry>
<entry>
<parameter>length</parameter> は、nullable になりました。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
<function>socket_write</function> は、<parameter>data</parameter> の内容を必ずしもすべて
書き込むとは限りません。ネットワークバッファの状態にもよりますが、
ある量のデータだけ、たとえば 1 バイトだけ書き込まれたのであったとしても、
そして <parameter>data</parameter> のサイズがそれより大きかったとしても、
それはエラーではなく正常な動作です。
そのため、<parameter>data</parameter> の残りが転送されたことを保証するには、
ループを使う必要があります。
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>socket_accept</function></member>
<member><function>socket_bind</function></member>
<member><function>socket_connect</function></member>
<member><function>socket_listen</function></member>
<member><function>socket_read</function></member>
<member><function>socket_strerror</function></member>
</simplelist>
</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
-->