2002-04-15 00:12:54 +00:00
|
|
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
2007-08-16 19:40:36 +00:00
|
|
|
<!-- $Revision: 1.14 $ -->
|
2007-06-20 22:25:43 +00:00
|
|
|
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.socket-get-option">
|
2007-06-15 00:16:44 +00:00
|
|
|
<refnamediv>
|
|
|
|
<refname>socket_get_option</refname>
|
|
|
|
<refpurpose>Gets socket options for the socket </refpurpose>
|
|
|
|
</refnamediv>
|
2007-06-15 00:16:46 +00:00
|
|
|
|
|
|
|
<refsect1 role="description">
|
|
|
|
&reftitle.description;
|
2007-06-15 00:16:44 +00:00
|
|
|
<methodsynopsis>
|
|
|
|
<type>mixed</type><methodname>socket_get_option</methodname>
|
|
|
|
<methodparam><type>resource</type><parameter>socket</parameter></methodparam>
|
|
|
|
<methodparam><type>int</type><parameter>level</parameter></methodparam>
|
|
|
|
<methodparam><type>int</type><parameter>optname</parameter></methodparam>
|
|
|
|
</methodsynopsis>
|
|
|
|
<para>
|
|
|
|
The <function>socket_get_option</function> function retrieves the value for
|
|
|
|
the option specified by the <parameter>optname</parameter> parameter for the
|
2007-06-15 00:16:46 +00:00
|
|
|
specified <parameter>socket</parameter>.
|
2007-06-15 00:16:44 +00:00
|
|
|
</para>
|
2007-06-15 00:16:46 +00:00
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1 role="parameters">
|
|
|
|
&reftitle.parameters;
|
|
|
|
<para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term><parameter>socket</parameter></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2007-07-03 19:53:55 +00:00
|
|
|
A valid socket resource created with <function>socket_create</function>
|
|
|
|
or <function>socket_accept</function>.
|
2007-06-15 00:16:46 +00:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
|
|
<term><parameter>level</parameter></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The <parameter>level</parameter> parameter specifies the protocol
|
|
|
|
level at which the option resides. For example, to retrieve options at
|
|
|
|
the socket level, a <parameter>level</parameter> parameter of
|
|
|
|
SOL_SOCKET would be used. Other levels, such as TCP, can be used by
|
|
|
|
specifying the protocol number of that level. Protocol numbers can be
|
|
|
|
found by using the <function>getprotobyname</function> function.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
|
|
<term><parameter>optname</parameter></term>
|
|
|
|
<listitem>
|
|
|
|
<table>
|
|
|
|
<title>Available Socket Options</title>
|
2007-08-16 19:30:16 +00:00
|
|
|
<tgroup cols="3">
|
2007-06-15 00:16:46 +00:00
|
|
|
<thead>
|
|
|
|
<row>
|
|
|
|
<entry>Option</entry>
|
|
|
|
<entry>Description</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>Type</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<row>
|
|
|
|
<entry>SO_DEBUG</entry>
|
|
|
|
<entry>
|
|
|
|
Reports whether debugging information is being recorded.
|
|
|
|
</entry>
|
|
|
|
<entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<type>int</type>
|
2007-06-15 00:16:46 +00:00
|
|
|
</entry>
|
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_BROADCAST</entry>
|
|
|
|
<entry>
|
|
|
|
Reports whether transmission of broadcast messages is supported.
|
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_REUSEADDR</entry>
|
|
|
|
<entry>
|
|
|
|
Reports whether local addresses can be reused.
|
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_KEEPALIVE</entry>
|
|
|
|
<entry>
|
|
|
|
Reports whether connections are kept active with periodic transmission
|
|
|
|
of messages. If the connected socket fails to respond to these messages,
|
|
|
|
the connection is broken and processes writing to that socket are notified
|
|
|
|
with a SIGPIPE signal.
|
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_LINGER</entry>
|
|
|
|
<entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<para>
|
|
|
|
Reports whether the <parameter>socket</parameter> lingers on
|
|
|
|
<function>socket_close</function> if data is present. By default,
|
|
|
|
when the socket is closed, it attempts to send all unsent data.
|
|
|
|
In the case of a connection-oriented socket,
|
|
|
|
<function>socket_close</function> will wait for its peer to
|
|
|
|
acknowledge the data.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
If <structfield>l_onoff</structfield> is non-zero and
|
|
|
|
<structfield>l_linger</structfield> is zero, all the
|
|
|
|
unsent data will be discarded and RST (reset) is sent to the
|
|
|
|
peer in the case of a connection-oriented socket.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
On the other hand, if <structfield>l_onoff</structfield> is
|
|
|
|
non-zero and <structfield>l_linger</structfield> is non-zero,
|
|
|
|
<function>socket_close</function> will block until all the data
|
|
|
|
is sent or the time specified in <structfield>l_linger</structfield>
|
|
|
|
elapses. If the socket is non-blocking,
|
|
|
|
<function>socket_close</function> will fail and return an error.
|
|
|
|
</para>
|
|
|
|
</entry>
|
|
|
|
<entry>
|
|
|
|
<type>array</type>. The array will contain two keys:
|
|
|
|
<structfield>l_onoff</structfield> and
|
|
|
|
<structfield>l_linger</structfield>.
|
2007-06-15 00:16:46 +00:00
|
|
|
</entry>
|
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_OOBINLINE</entry>
|
|
|
|
<entry>
|
|
|
|
Reports whether the <parameter>socket</parameter> leaves out-of-band data inline.
|
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_SNDBUF</entry>
|
|
|
|
<entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
Reports the size of the send buffer.
|
2007-06-15 00:16:46 +00:00
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_RCVBUF</entry>
|
|
|
|
<entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
Reports the size of the receive buffer.
|
2007-06-15 00:16:46 +00:00
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_ERROR</entry>
|
|
|
|
<entry>
|
|
|
|
Reports information about error status and clears it.
|
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type> (cannot be set by <function>socket_set_option</function>)
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_TYPE</entry>
|
|
|
|
<entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
Reports the <parameter>socket</parameter> type (e.g.
|
|
|
|
<constant>SOCK_STREAM</constant>).
|
|
|
|
</entry>
|
|
|
|
<entry>
|
|
|
|
<type>int</type> (cannot be set by <function>socket_set_option</function>)
|
2007-06-15 00:16:46 +00:00
|
|
|
</entry>
|
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_DONTROUTE</entry>
|
|
|
|
<entry>
|
|
|
|
Reports whether outgoing messages bypass the standard routing facilities.
|
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_RCVLOWAT</entry>
|
|
|
|
<entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
Reports the minimum number of bytes to process for <parameter>socket</parameter>
|
|
|
|
input operations.
|
|
|
|
</entry>
|
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
2007-06-15 00:16:46 +00:00
|
|
|
</entry>
|
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_RCVTIMEO</entry>
|
|
|
|
<entry>
|
|
|
|
Reports the timeout value for input operations.
|
|
|
|
</entry>
|
|
|
|
<entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<type>array</type>. The array will contain two keys:
|
|
|
|
<structfield>sec</structfield> which is the seconds part on the timeout
|
|
|
|
value and <structfield>usec</structfield> which is the microsecond part
|
|
|
|
of the timeout value.
|
2007-06-15 00:16:46 +00:00
|
|
|
</entry>
|
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_SNDTIMEO</entry>
|
|
|
|
<entry>
|
|
|
|
Reports the timeout value specifying the amount of time that an output
|
|
|
|
function blocks because flow control prevents data from being sent.
|
|
|
|
</entry>
|
2007-08-16 19:30:16 +00:00
|
|
|
<entry>
|
|
|
|
<type>array</type>. The array will contain two keys:
|
|
|
|
<structfield>sec</structfield> which is the seconds part on the timeout
|
|
|
|
value and <structfield>usec</structfield> which is the microsecond part
|
|
|
|
of the timeout value.
|
|
|
|
</entry>
|
|
|
|
</row>
|
|
|
|
<row>
|
|
|
|
<entry>SO_SNDLOWAT</entry>
|
|
|
|
<entry>
|
|
|
|
Reports the minimum number of bytes to process for <parameter>socket</parameter> output operations.
|
|
|
|
</entry>
|
|
|
|
<entry>
|
|
|
|
<type>int</type>
|
|
|
|
</entry>
|
2007-06-15 00:16:46 +00:00
|
|
|
</row>
|
|
|
|
</tbody>
|
|
|
|
</tgroup>
|
|
|
|
</table>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1 role="returnvalues">
|
|
|
|
&reftitle.returnvalues;
|
2007-06-15 00:16:44 +00:00
|
|
|
<para>
|
2007-06-15 00:16:46 +00:00
|
|
|
Returns the value of the given option, or &false; on errors.
|
2007-06-15 00:16:44 +00:00
|
|
|
</para>
|
|
|
|
</refsect1>
|
2007-06-15 00:16:46 +00:00
|
|
|
|
2007-08-16 19:40:36 +00:00
|
|
|
<refsect1 role="examples">
|
|
|
|
&reftitle.examples;
|
|
|
|
<para>
|
|
|
|
<example>
|
|
|
|
<title><function>socket_set_option</function> example</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>
|
|
|
|
|
2007-06-15 00:16:46 +00:00
|
|
|
<refsect1 role="changelog">
|
|
|
|
&reftitle.changelog;
|
|
|
|
<para>
|
|
|
|
<informaltable>
|
|
|
|
<tgroup cols="2">
|
|
|
|
<thead>
|
|
|
|
<row>
|
|
|
|
<entry>&Version;</entry>
|
|
|
|
<entry>&Description;</entry>
|
|
|
|
</row>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<row>
|
|
|
|
<entry>4.3.0</entry>
|
|
|
|
<entry>
|
|
|
|
The name of this function was changed. It used to be called
|
|
|
|
<literal>socket_getopt()</literal>.
|
|
|
|
</entry>
|
|
|
|
</row>
|
|
|
|
</tbody>
|
|
|
|
</tgroup>
|
|
|
|
</informaltable>
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
2007-06-15 00:16:44 +00:00
|
|
|
</refentry>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
|
|
|
<!-- 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:"../../../../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
|
|
|
|
-->
|