-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathsocket-read.xml
143 lines (137 loc) · 4.5 KB
/
socket-read.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: f80105b4fc1196bd8d5fecb98d686b580b1ff65d Maintainer: her-cat Status: ready -->
<!-- CREDITS: Luffy -->
<refentry xml:id="function.socket-read" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>socket_read</refname>
<refpurpose>从套接字中读取最大长度的数据</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>false</type></type><methodname>socket_read</methodname>
<methodparam><type>Socket</type><parameter>socket</parameter></methodparam>
<methodparam><type>int</type><parameter>length</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer><constant>PHP_BINARY_READ</constant></initializer></methodparam>
</methodsynopsis>
<para>
<function>socket_read</function> 函数是从 <function>socket_create</function>
或 <function>socket_accept</function> 函数所创建的 <classname>Socket</classname>
实例 <parameter>socket</parameter> 中读取数据。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>socket</parameter></term>
<listitem>
<para>
使用 <function>socket_create</function>
或 <function>socket_accept</function>
函数创建的 <classname>Socket</classname> 实例。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>length</parameter></term>
<listitem>
<para>
<parameter>length</parameter> 参数指定了最大能够读取的字节数。否则您可以使用
<literal>\r</literal>、<literal>\n</literal>、<literal>\0</literal>
结束读取(根据 <parameter>mode</parameter> 参数设置,请参见下文)。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
可选参数 <parameter>mode</parameter> 是一个命名常量:
<itemizedlist>
<listitem>
<simpara>
<constant>PHP_BINARY_READ</constant> (默认)- 使用系统的
<literal>recv()</literal> 函数。二进制安全地读取数据。
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_NORMAL_READ</constant> - 读取到
<literal>\n</literal>、<literal>\r</literal> 时停止。
</simpara>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<function>socket_read</function> 返回一个字符串,表示接收到的数据。如果发生了错误(包括远程主机关闭了连接),则返回 &false;。错误码可使用
<function>socket_last_error</function> 获取。也可使用 <function>socket_strerror</function>
来获取错误码的文字描述。
</para>
<note>
<para>
当套接字中没有更多数据可读取时,<function>socket_read</function>
返回一个长度为 0 的空字符串("")。
</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;
</tbody>
</tgroup>
</informaltable>
</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_last_error</function></member>
<member><function>socket_strerror</function></member>
<member><function>socket_write</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
-->