-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathsocket-recv.xml
253 lines (232 loc) · 7.36 KB
/
socket-recv.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 14dc7c47365f2b71f6c907a5ba5bccf42534d5a9 Maintainer: nilgun Status: ready -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.socket-recv">
<refnamediv>
<refname>socket_recv</refname>
<refpurpose>Bağlı bir soketten veri alır</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>socket_recv</methodname>
<methodparam><type>Socket</type><parameter>soket</parameter></methodparam>
<methodparam><type class="union"><type>string</type><type>null</type></type><parameter role="reference">tampon</parameter></methodparam>
<methodparam><type>int</type><parameter>uzunluk</parameter></methodparam>
<methodparam><type>int</type><parameter>seçenekler</parameter></methodparam>
</methodsynopsis>
<para>
<function>socket_recv</function> işlevi <parameter>soket</parameter> ile
belirtilen soketten <parameter>tampon</parameter> içindeki
<parameter>uzunluk</parameter> baytı okur. <function>socket_recv</function>
ayrıca, bağlantılı soketlerden veri toplama için de kullanılır. Buna ek
olarak işlevin davranışlarında değişiklik yapmak için bir veya daha fazla
sayıda seçenek belirtilebilir.
</para>
<para>
<parameter>tampon</parameter> gönderimli aktarılır, dolayısıyla işlevin
bağımsız değişkenleri arasında bir değişken olarak yer almalıdır.
<function>socket_recv</function> tarafından <parameter>socket</parameter>
soketinden okunan veri <parameter>tampon</parameter>'a konarak döndürülür.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>soket</parameter></term>
<listitem>
<para>
<function>socket_create</function> ile önceden oluşturulmuş geçerli bir
<classname>Socket</classname> örneği.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>tampon</parameter></term>
<listitem>
<para>
Verinin alınacağı değişken burada belirtilir. Bir hata oluşursa,
bağlantı kesilirse veya alınacak bir veri yoksa
<parameter>tampon</parameter>'dan &null; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>uzunluk</parameter></term>
<listitem>
<para>
Okunacak azami bayt sayısını belirler.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>seçenekler</parameter></term>
<listitem>
<para>
Aşağıdaki seçeneklerin bitsel VEYAlanmış bir birleşimi.
</para>
<table>
<title>Olası <parameter>seçenekler</parameter></title>
<tgroup cols="2">
<tbody>
<row>
<entry><constant>MSG_OOB</constant></entry>
<entry>
Band dışı veri gönderilir.
</entry>
</row>
<row>
<entry><constant>MSG_EOR</constant></entry>
<entry>
Bir kayıt imi belirtir. Gönderilen veri kaydın tamamlanmasını
sağlar.
</entry>
</row>
<row>
<entry><constant>MSG_EOF</constant></entry>
<entry>
Soketin gönderici tarafı kapatılır ve gönderilen verinin sonuna
bununla ilgili bir bildirim yerleştirilir. Gönderilen veri
aktarımın tamamlanmasını sağlar.
</entry>
</row>
<row>
<entry><constant>MSG_DONTROUTE</constant></entry>
<entry>
Yönlendirme es geçilip doğrudan arabirim kullanılır.
</entry>
</row>
</tbody>
</tgroup>
</table>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Bir hata oluşmuşsa &false; yoksa alınan bayt sayısını döndürür. Oluşan
hatanın kodu <function>socket_last_error</function> ile açıklaması ise, elde
edilen hata kodu <function>socket_strerror</function> işlevine aktarılarak
alınabilir.
</para>
</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="examples">
&reftitle.examples;
<para>
<example>
<title>- <function>socket_recv</function> örneği</title>
<para>
Bu örnek, <xref linkend="sockets.examples" /> arasında <function>socket_recv</function> kullanan ilk örneğin yeniden yazılmışıdır.
</para>
<programlisting role="php">
<![CDATA[
<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP Bağlantısı</h2>\n";
/* HTTP hizmeti için portu öğrenelim. */
$service_port = getservbyname('www', 'tcp');
/* Hedef konağın IP adresini alalım. */
$address = gethostbyname('www.example.com');
/* Bir TCP/IP soketi oluşturalım. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() başısız oldu: sebep: " .
socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "'$service_port' portundun '$address' adresine bağlanmaya çalışılıyor...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() başısız oldu:\nSebep: ($result) " .
socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "HTTP HEAD isteğini gönderelim...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Yanıtı okuyalım:\n\n";
$buf = 'Bu bir veri tamponu verisidir.';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
echo "Read $bytes bytes from socket_recv(). Closing socket...";
} else {
echo "socket_recv() failed; reason: " .
socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);
echo $buf . "\n";
echo "OK.\n\n";
?>
]]>
</programlisting>
<para>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
</para>
<screen>
<![CDATA[
<h2>TCP/IP Bağlantısı</h2>
OK.
'80' portundan '208.77.188.166' adresine bağlanmaya çalışılıyor...OK.
HTTP HEAD isteği gönderiliyor...OK.
Okunan yanıt:
Read 123 bytes from socket_recv(). Closing socket...HTTP/1.1 200 OK
Date: Mon, 14 Sep 2009 08:56:36 GMT
Server: Apache/2.2.3 (Red Hat)
Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT
ETag: "b80f4-1b6-80bfd280"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8
OK.
]]>
</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
-->