-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy pathsocket-get-option.xml
More file actions
663 lines (654 loc) · 22.7 KB
/
socket-get-option.xml
File metadata and controls
663 lines (654 loc) · 22.7 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
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
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: e50e79746736dbdfbabe9bd3566793b3ddf38f58 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.socket-get-option" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>socket_get_option</refname>
<refpurpose>Lee las opciones del socket</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>array</type><type>int</type><type>false</type></type><methodname>socket_get_option</methodname>
<methodparam><type>Socket</type><parameter>socket</parameter></methodparam>
<methodparam><type>int</type><parameter>level</parameter></methodparam>
<methodparam><type>int</type><parameter>option</parameter></methodparam>
</methodsynopsis>
<para>
<function>socket_get_option</function> recupera el valor de la opción
especificada por el argumento <parameter>option</parameter> para el socket
especificado por el argumento <parameter>socket</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>socket</parameter></term>
<listitem>
<para>
Una instancia de <classname>Socket</classname> creada por
<function>socket_create</function> o <function>socket_accept</function>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>level</parameter></term>
<listitem>
<para>
El argumento <parameter>level</parameter> especifica la capa de
protocolo de la opción. Por ejemplo, para conocer las opciones de
la capa socket, el valor <constant>SOL_SOCKET</constant> del argumento
<parameter>level</parameter> será utilizado. Otros niveles, como
<constant>TCP</constant>, pueden ser utilizados especificando el
número del protocolo de esta capa. Los números de protocolos
pueden ser encontrados utilizando la función
<function>getprotobyname</function>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>option</parameter></term>
<listitem>
<table>
<title>Opciones disponibles para los sockets</title>
<tgroup cols="3">
<thead>
<row>
<entry>Opción</entry>
<entry>Descripción</entry>
<entry>Tipo</entry>
</row>
</thead>
<tbody>
<row>
<entry><constant>SO_DEBUG</constant></entry>
<entry>
Reporta si las informaciones de depuración son registradas o no.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_BROADCAST</constant></entry>
<entry>
Reporta si la transmisión de anuncios globales es soportada o no.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_REUSEADDR</constant></entry>
<entry>
Indica si las direcciones locales pueden ser reutilizadas o no.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_REUSEPORT</constant></entry>
<entry>
Indica si los puertos locales pueden ser reutilizados.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_KEEPALIVE</constant></entry>
<entry>
Reporta si las conexiones son persistentes con transmisiones
periódicas de mensajes o no. Si el socket conectado falla en
respuesta a estos mensajes, la conexión es interrumpida y el proceso
escribirá sobre este socket una notificación con un señal SIGPIPE.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_LINGER</constant></entry>
<entry>
<para>
Reporta si el socket <parameter>socket</parameter> se demora en
la función <function>socket_close</function> si hay datos presentes o no. Por omisión, cuando el socket es cerrado,
<function>socket_close</function> intenta enviar todos los
datos que no han sido enviados aún.
</para>
<para>
Si <varname>l_onoff</varname> no vale cero y que
<varname>l_linger</varname> vale cero, todos los datos
que no han sido enviados aún serán cancelados y RST
(reinicialización) será enviado en el caso de una conexión
orientada socket.
</para>
<para>
Por otro lado, si <varname>l_onoff</varname> no vale cero
y <varname>l_linger</varname> no vale cero,
<function>socket_close</function> bloqueará hasta que los datos
no enviados sean enviados o durante el tiempo especificado por
<varname>l_linger</varname>. Si el socket es no-bloqueante,
<function>socket_close</function> fallará y retornará un
error.
</para>
</entry>
<entry>
<type>array</type>. El array contendrá 2 claves :
<varname>l_onoff</varname> y
<varname>l_linger</varname>.
</entry>
</row>
<row>
<entry><constant>SO_OOBINLINE</constant></entry>
<entry>
Reporta si el socket <parameter>socket</parameter> parte sobre datos en
línea out-of-band o no.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_SNDBUF</constant></entry>
<entry>
Reporta las informaciones sobre el tamaño del buffer enviado.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_RCVBUF</constant></entry>
<entry>
Reporta las informaciones sobre el tamaño del buffer recibido.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_ERROR</constant></entry>
<entry>
Reporta las informaciones sobre el estado de error y lo vacía.
</entry>
<entry>
<type>int</type> (no puede ser definido por la función
<function>socket_set_option</function>)
</entry>
</row>
<row>
<entry><constant>SO_TYPE</constant></entry>
<entry>
Reporta el tipo del socket <parameter>socket</parameter> (ej.
<constant>SOCK_STREAM</constant>).
</entry>
<entry>
<type>int</type> (no puede ser definido por la función
<function>socket_set_option</function>)
</entry>
</row>
<row>
<entry><constant>SO_DONTROUTE</constant></entry>
<entry>
Reporta si los mensajes salientes desvían los equipos estándar de encaminamiento.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_RCVLOWAT</constant></entry>
<entry>
Reporta el número mínimo de octetos al proceso para las operaciones
entrantes sobre el socket <parameter>socket</parameter>.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_RCVTIMEO</constant></entry>
<entry>
Reporta el valor del tiempo límite para las operaciones entrantes.
</entry>
<entry>
<type>array</type>. El array contendrá 2 claves :
<varname>sec</varname> que es la parte representando los segundos
del valor del tiempo de espera y <varname>usec</varname> que es
la parte representando los microsegundos.
</entry>
</row>
<row>
<entry><constant>SO_SNDTIMEO</constant></entry>
<entry>
Reporta el valor del tiempo límite especificando el tiempo máximo de ejecución
para las funciones salientes bloqueantes porque el comando de flujo
impide que los datos sean enviados.
</entry>
<entry>
<type>array</type>. El array contendrá 2 claves :
<varname>sec</varname> que es la parte representando los segundos
del valor del tiempo de espera y <varname>usec</varname> que es
la parte representando los microsegundos.
</entry>
</row>
<row>
<entry><constant>SO_SNDLOWAT</constant></entry>
<entry>
Reporta el número mínimo de octetos al proceso para las operaciones
salientes sobre el socket <parameter>socket</parameter>.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_NODELAY</constant></entry>
<entry>
Indica si el algoritmo Nagle TCP está desactivado.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>MCAST_JOIN_GROUP</constant></entry>
<entry>
Se une a un grupo multicast.
</entry>
<entry>
Un array con una clave <literal>"group"</literal>,
especificando un string con las direcciones multicast IPv4 o IPv6
y una clave <literal>"interface"</literal>, especificando ya sea un
número de interfaz (de tipo <type>int</type>), ya sea un
string con el nombre de la interfaz, como
<literal>"eth0"</literal>.
<literal>0</literal> puede ser especificado para indicar que la interfaz
debe ser seleccionada utilizando las reglas de encaminamiento (no puede ser
utilizado más que con la función <function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_LEAVE_GROUP</constant></entry>
<entry>
Abandona un grupo multicast.
</entry>
<entry>
Un array. Ver la constante <constant>MCAST_JOIN_GROUP</constant>
para más informaciones (no puede ser utilizado más que con la función
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_BLOCK_SOURCE</constant></entry>
<entry>
Bloquea paquetes llegando desde una fuente específica
hacia un grupo multicast específico, que habrá debido ser unido
anteriormente.
</entry>
<entry>
Un array conteniendo las mismas claves que las de la constante
<constant>MCAST_JOIN_GROUP</constant>, con una clave adicional
<literal>source</literal>, ligado a un string especificando
una dirección IPv4 o IPv6 de la fuente a bloquear
(no puede ser utilizado más que con la función
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_UNBLOCK_SOURCE</constant></entry>
<entry>
Desbloquea (recomienza a recibir) los paquetes llegando desde
una fuente específica hacia un grupo multicast específico,
que habrá debido ser unido anteriormente.
</entry>
<entry>
Un array en el mismo formato que el de la constante
<constant>MCAST_BLOCK_SOURCE</constant>
(no puede ser utilizado más que con la función
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_JOIN_SOURCE_GROUP</constant></entry>
<entry>
Recibe paquetes destinados a un grupo multicast específico
cuya dirección fuente corresponde a un valor específico.
</entry>
<entry>
Un array en el mismo formato que el de la constante
<constant>MCAST_BLOCK_SOURCE</constant>
(no puede ser utilizado más que con la función
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>MCAST_LEAVE_SOURCE_GROUP</constant></entry>
<entry>
Deja de recibir paquetes destinados a un grupo multicast
específico cuya dirección fuente corresponde a un valor específico.
</entry>
<entry>
Un array en el mismo formato que el de la constante
<constant>MCAST_BLOCK_SOURCE</constant>
(no puede ser utilizado más que con la función
<function>socket_set_option</function>).
</entry>
</row>
<row>
<entry><constant>IP_MULTICAST_IF</constant></entry>
<entry>
La interfaz de salida para los paquetes multicast IPv4.
</entry>
<entry>
Ya sea un entero especificando el número de la interfaz, ya sea un
string representando el nombre de la interfaz, por ejemplo,
<literal>eth0</literal>. El valor <type>0</type>
puede ser utilizado para indicar la tabla de encaminamiento a utilizar
en la selección de la interfaz. La función
<function>socket_get_option</function> retorna un índice de interfaz.
Note que, a diferencia de la API C, esta opción no toma
como argumento una dirección IP. Esto elimina la diferencia de interfaz
entre las constantes <constant>IP_MULTICAST_IF</constant> y
<constant>IPV6_MULTICAST_IF</constant>.
</entry>
</row>
<row>
<entry><constant>IPV6_MULTICAST_IF</constant></entry>
<entry>
La interfaz de salida para los paquetes multicast IPv6.
</entry>
<entry>
Idéntico a la constante <constant>IP_MULTICAST_IF</constant>.
</entry>
</row>
<row>
<entry><constant>IP_MULTICAST_LOOP</constant></entry>
<entry>
La política de la bucla local multicast para los paquetes
IPv4 activa o desactiva el buclaje de las multidifusiones salientes,
que deben haber sido unidas anteriormente. El efecto difiere sin embargo
según que se aplique a Unix o a Windows, el primero siendo sobre el
camino de recepción mientras que el segundo sobre el camino de envío.
</entry>
<entry>
Un entero (ya sea <literal>0</literal>, ya sea <literal>1</literal>).
Para la función <function>socket_set_option</function>,
cualquier valor será aceptado y será convertido
en un booleano siguiendo las reglas habituales de PHP.
</entry>
</row>
<row>
<entry><constant>IPV6_MULTICAST_LOOP</constant></entry>
<entry>
Idéntico a la constante <constant>IP_MULTICAST_LOOP</constant>,
pero para el IPv6.
</entry>
<entry>
Un entero. Ver la constante <constant>IP_MULTICAST_LOOP</constant>.
</entry>
</row>
<row>
<entry><constant>IP_MULTICAST_TTL</constant></entry>
<entry>
La duración de vida de los paquetes salientes multicast IPv4.
Esto debe ser un valor comprendido entre 0 (no salir
de la interfaz) y 255. Por omisión, el valor es a 1 (solo
la red local es alcanzada).
</entry>
<entry>
Un entero entre 0 y 255.
</entry>
</row>
<row>
<entry><constant>IPV6_MULTICAST_HOPS</constant></entry>
<entry>
Idéntico a la constante <constant>IP_MULTICAST_TTL</constant>,
pero para los paquetes IPv6. El valor -1 es igualmente aceptado,
significando que la ruta por omisión debe ser utilizada.
</entry>
<entry>
Un entero comprendido entre -1 y 255.
</entry>
</row>
<row>
<entry><constant>SO_MARK</constant></entry>
<entry>
Define un identificador sobre el socket para el propósito de filtrar
los paquetes sobre Linux.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_ACCEPTFILTER</constant></entry>
<entry>
Añade un filtro de aceptación sobre el socket escuchado (FreeBSD/NetBSD).
Un módulo kernel de filtro de aceptación debe ser cargado
primero sobre FreeBSD (ej. accf_http).
</entry>
<entry>
<type>string</type> nombre del filtro (longitud 15 max).
</entry>
</row>
<row>
<entry><constant>SO_USER_COOKIE</constant></entry>
<entry>
Define un identificador sobre el socket para el propósito de filtrar
los paquetes sobre FreeBSD.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_RTABLE</constant></entry>
<entry>
Define un identificador sobre el socket para el propósito de filtrar
los paquetes sobre OpenBSD.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_DONTTRUNC</constant></entry>
<entry>
Conserva los datos no leídos.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_WANTMORE</constant></entry>
<entry>
Proporciona un índice cuando más datos están listos.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_DEFER_ACCEPT</constant></entry>
<entry>
No notificar un socket que escucha hasta que los datos no estén listos.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_INCOMING_CPU</constant></entry>
<entry>
Recupera/Define la afinidad del cpu para un socket.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_MEMINFO</constant></entry>
<entry>
Recupera toda la meminfo de un socket.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_BPF_EXTENSIONS</constant></entry>
<entry>
Recupera las extensiones BPF soportadas por el kernel para adjuntar a un socket.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SO_SETFIB</constant></entry>
<entry>
Define la tabla de encaminamiento (FIB) de un socket. (FreeBSD solamente)
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>SOL_FILTER</constant></entry>
<entry>
Filtros atribuidos a un socket. (Solaris/Illumos solamente)
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_KEEPCNT</constant></entry>
<entry>
Define el número máximo de sondas keepalive TCP debería enviar antes de soltar la conexión.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_KEEPIDLE</constant></entry>
<entry>
Define el tiempo que la conexión debe permanecer inactiva.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_KEEPINTVL</constant></entry>
<entry>
Define el tiempo entre las sondas keepalive individuales.
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_KEEPALIVE</constant></entry>
<entry>
Define el tiempo que la conexión debe permanecer inactiva. (macOS solamente)
</entry>
<entry>
<type>int</type>
</entry>
</row>
<row>
<entry><constant>TCP_NOTSENT_LOWAT</constant></entry>
<entry>
Define el número límite de datos no enviados en la cola de escritura
por el flujo de socket. (Linux solamente)
</entry>
<entry>
<type>int</type>
</entry>
</row>
</tbody>
</tgroup>
</table>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retorna el valor de la opción proporcionada, &return.falseforfailure;.
</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>Ejemplo con <function>socket_get_option</function></title>
<programlisting role="php">
<![CDATA[
<?php
$socket = socket_create_listen(1223);
$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);
var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>socket_create_listen</function></member>
<member><function>socket_set_option</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
-->