/.vim/manual/php/function.socket-get-option.html
HTML | 531 lines | 463 code | 68 blank | 0 comment | 0 complexity | 3db319c042ffdd338c7991b453627855 MD5 | raw file
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- <title>Gets socket options for the socket</title>
- </head>
- <body><div class="manualnavbar" style="text-align: center;">
- <div class="prev" style="text-align: left; float: left;"><a href="function.socket-create.html">socket_create</a></div>
- <div class="next" style="text-align: right; float: right;"><a href="function.socket-getpeername.html">socket_getpeername</a></div>
- <div class="up"><a href="ref.sockets.html">Socket Functions</a></div>
- <div class="home"><a href="index.html">PHP Manual</a></div>
- </div><hr /><div id="function.socket-get-option" class="refentry">
- <div class="refnamediv">
- <h1 class="refname">socket_get_option</h1>
- <p class="verinfo">(PHP 4 >= 4.3.0, PHP 5)</p><p class="refpurpose"><span class="refname">socket_get_option</span> — <span class="dc-title">Gets socket options for the socket </span></p>
- </div>
-
- <div class="refsect1 description" id="refsect1-function.socket-get-option-description">
- <h3 class="title">Description</h3>
- <div class="methodsynopsis dc-description">
- <span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <span class="methodname"><b>socket_get_option</b></span>
- ( <span class="methodparam"><span class="type">resource</span> <tt class="parameter">$socket</tt></span>
- , <span class="methodparam"><span class="type">int</span> <tt class="parameter">$level</tt></span>
- , <span class="methodparam"><span class="type">int</span> <tt class="parameter">$optname</tt></span>
- )</div>
- <p class="para rdfs-comment">
- The <span class="function"><b>socket_get_option()</b></span> function retrieves the value for
- the option specified by the <i><tt class="parameter">optname</tt></i> parameter for the
- specified <i><tt class="parameter">socket</tt></i>.
- </p>
- </div>
- <div class="refsect1 parameters" id="refsect1-function.socket-get-option-parameters">
- <h3 class="title">Parameters</h3>
- <p class="para">
- <dl>
- <dt>
- <span class="term"><i><tt class="parameter">socket</tt></i></span>
- <dd>
- <p class="para">
- A valid socket resource created with <span class="function"><a href="function.socket-create.html" class="function">socket_create()</a></span>
- or <span class="function"><a href="function.socket-accept.html" class="function">socket_accept()</a></span>.
- </p>
- </dd>
- </dt>
- <dt>
- <span class="term"><i><tt class="parameter">level</tt></i></span>
- <dd>
- <p class="para">
- The <i><tt class="parameter">level</tt></i> parameter specifies the protocol
- level at which the option resides. For example, to retrieve options at
- the socket level, a <i><tt class="parameter">level</tt></i> parameter of
- <b><tt>SOL_SOCKET</tt></b> would be used. Other levels, such as
- <b><tt>TCP</tt></b>, can be used by
- specifying the protocol number of that level. Protocol numbers can be
- found by using the <span class="function"><a href="function.getprotobyname.html" class="function">getprotobyname()</a></span> function.
- </p>
- </dd>
- </dt>
- <dt>
- <span class="term"><i><tt class="parameter">optname</tt></i></span>
- <dd>
- <table class="doctable table">
- <caption><b>Available Socket Options</b></caption>
-
- <thead valign="middle">
- <tr valign="middle">
- <th>Option</th>
- <th>Description</th>
- <th>Type</th>
- </tr>
- </thead>
- <tbody valign="middle" class="tbody">
- <tr valign="middle">
- <td align="left"><b><tt>SO_DEBUG</tt></b></td>
- <td align="left">
- Reports whether debugging information is being recorded.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_BROADCAST</tt></b></td>
- <td align="left">
- Reports whether transmission of broadcast messages is supported.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_REUSEADDR</tt></b></td>
- <td align="left">
- Reports whether local addresses can be reused.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_KEEPALIVE</tt></b></td>
- <td align="left">
- 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.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_LINGER</tt></b></td>
- <td align="left">
- <p class="para">
- Reports whether the <i><tt class="parameter">socket</tt></i> lingers on
- <span class="function"><a href="function.socket-close.html" class="function">socket_close()</a></span> 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,
- <span class="function"><a href="function.socket-close.html" class="function">socket_close()</a></span> will wait for its peer to
- acknowledge the data.
- </p>
- <p class="para">
- If <var class="varname"><var class="varname">l_onoff</var></var> is non-zero and
- <var class="varname"><var class="varname">l_linger</var></var> 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.
- </p>
- <p class="para">
- On the other hand, if <var class="varname"><var class="varname">l_onoff</var></var> is
- non-zero and <var class="varname"><var class="varname">l_linger</var></var> is non-zero,
- <span class="function"><a href="function.socket-close.html" class="function">socket_close()</a></span> will block until all the data
- is sent or the time specified in <var class="varname"><var class="varname">l_linger</var></var>
- elapses. If the socket is non-blocking,
- <span class="function"><a href="function.socket-close.html" class="function">socket_close()</a></span> will fail and return an error.
- </p>
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span>. The array will contain two keys:
- <var class="varname"><var class="varname">l_onoff</var></var> and
- <var class="varname"><var class="varname">l_linger</var></var>.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_OOBINLINE</tt></b></td>
- <td align="left">
- Reports whether the <i><tt class="parameter">socket</tt></i> leaves out-of-band data inline.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_SNDBUF</tt></b></td>
- <td align="left">
- Reports the size of the send buffer.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_RCVBUF</tt></b></td>
- <td align="left">
- Reports the size of the receive buffer.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_ERROR</tt></b></td>
- <td align="left">
- Reports information about error status and clears it.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span> (cannot be set by <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_TYPE</tt></b></td>
- <td align="left">
- Reports the <i><tt class="parameter">socket</tt></i> type (e.g.
- <b><tt>SOCK_STREAM</tt></b>).
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span> (cannot be set by <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_DONTROUTE</tt></b></td>
- <td align="left">
- Reports whether outgoing messages bypass the standard routing facilities.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_RCVLOWAT</tt></b></td>
- <td align="left">
- Reports the minimum number of bytes to process for <i><tt class="parameter">socket</tt></i>
- input operations.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_RCVTIMEO</tt></b></td>
- <td align="left">
- Reports the timeout value for input operations.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span>. The array will contain two keys:
- <var class="varname"><var class="varname">sec</var></var> which is the seconds part on the timeout
- value and <var class="varname"><var class="varname">usec</var></var> which is the microsecond part
- of the timeout value.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_SNDTIMEO</tt></b></td>
- <td align="left">
- Reports the timeout value specifying the amount of time that an output
- function blocks because flow control prevents data from being sent.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span>. The array will contain two keys:
- <var class="varname"><var class="varname">sec</var></var> which is the seconds part on the timeout
- value and <var class="varname"><var class="varname">usec</var></var> which is the microsecond part
- of the timeout value.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>SO_SNDLOWAT</tt></b></td>
- <td align="left">
- Reports the minimum number of bytes to process for <i><tt class="parameter">socket</tt></i> output operations.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>TCP_NODELAY</tt></b></td>
- <td align="left">
- Reports whether the Nagle TCP algorithm is disabled.
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>MCAST_JOIN_GROUP</tt></b></td>
- <td align="left">
- Joins a multicast group. (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span> with keys <i>"group"</i>, specifying
- a <span class="type"><a href="language.types.string.html" class="type string">string</a></span> with an IPv4 or IPv6 multicast address and
- <i>"interface"</i>, specifying either an interface
- number (type <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>) or a <i>string</i> with
- the interface name, like <i>"eth0"</i>.
- <i>0</i> can be specified to indicate the interface
- should be selected using routing rules. (can only be used in
- <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>MCAST_LEAVE_GROUP</tt></b></td>
- <td align="left">
- Leaves a multicast group. (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span>. See <b><tt>MCAST_JOIN_GROUP</tt></b> for
- more information. (can only be used in
- <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>MCAST_BLOCK_SOURCE</tt></b></td>
- <td align="left">
- Blocks packets arriving from a specific source to a specific
- multicast group, which must have been previously joined.
- (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span> with the same keys as
- <b><tt>MCAST_JOIN_GROUP</tt></b>, plus one extra key,
- <i>source</i>, which maps to a <span class="type"><a href="language.types.string.html" class="type string">string</a></span>
- specifying an IPv4 or IPv6 address of the source to be blocked.
- (can only be used in <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>MCAST_UNBLOCK_SOURCE</tt></b></td>
- <td align="left">
- Unblocks (start receiving again) packets arriving from a specific
- source address to a specific multicast group, which must have been
- previously joined. (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span> with the same format as
- <b><tt>MCAST_BLOCK_SOURCE</tt></b>.
- (can only be used in <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>MCAST_JOIN_SOURCE_GROUP</tt></b></td>
- <td align="left">
- Receive packets destined to a specific multicast group whose source
- address matches a specific value. (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span> with the same format as
- <b><tt>MCAST_BLOCK_SOURCE</tt></b>.
- (can only be used in <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>MCAST_LEAVE_SOURCE_GROUP</tt></b></td>
- <td align="left">
- Stop receiving packets destined to a specific multicast group whose
- soure address matches a specific value. (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.array.html" class="type array">array</a></span> with the same format as
- <b><tt>MCAST_BLOCK_SOURCE</tt></b>.
- (can only be used in <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>)
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>IP_MULTICAST_IF</tt></b></td>
- <td align="left">
- The outgoing interface for IPv4 multicast packets.
- (added in PHP 5.4)
- </td>
- <td align="left">
- Either <span class="type"><a href="language.types.integer.html" class="type int">int</a></span> specifying the interface number or a
- <span class="type"><a href="language.types.string.html" class="type string">string</a></span> with an interface name, like
- <i>eth0</i>. The value <span class="type"><span class="type 0">0</span></span> can be used to
- indicate the routing table is to used in the interface selection.
- The function <span class="function"><b>socket_get_option()</b></span> returns an
- interface index.
- Note that, unlike the C API, this option does NOT take an IP
- address. This eliminates the interface difference between
- <b><tt>IP_MULTICAST_IF</tt></b> and
- <b><tt>IPV6_MULTICAST_IF</tt></b>.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>IPV6_MULTICAST_IF</tt></b></td>
- <td align="left">
- The outgoing interface for IPv6 multicast packets.
- (added in PHP 5.4)
- </td>
- <td align="left">
- The same as <b><tt>IP_MULTICAST_IF</tt></b>.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>IP_MULTICAST_LOOP</tt></b></td>
- <td align="left">
- The multicast loopback policy for IPv4 packets, which
- determines whether multicast packets sent by this socket also reach
- receivers in the same host that have joined the same multicast group
- on the outgoing interface used by this socket. This is the case by
- default.
- (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span> (either <i>0</i> or
- <i>1</i>). For <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span>
- any value will be accepted and will be converted to a boolean
- following the usual PHP rules.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>IPV6_MULTICAST_LOOP</tt></b></td>
- <td align="left">
- Analogous to <b><tt>IP_MULTICAST_LOOP</tt></b>, but for IPv6.
- (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span>. See <b><tt>IP_MULTICAST_LOOP</tt></b>.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>IP_MULTICAST_TTL</tt></b></td>
- <td align="left">
- The time-to-live of outgoing IPv4 multicast packets. This should be
- a value between 0 (don't leave the interface) and 255. The default
- value is 1 (only the local network is reached).
- (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span> between 0 and 255.
- </td>
- </tr>
- <tr valign="middle">
- <td align="left"><b><tt>IPV6_MULTICAST_HOPS</tt></b></td>
- <td align="left">
- Analogous to <b><tt>IP_MULTICAST_TTL</tt></b>, but for IPv6
- packets. The value -1 is also accepted, meaning the route default
- should be used.
- (added in PHP 5.4)
- </td>
- <td align="left">
- <span class="type"><a href="language.types.integer.html" class="type int">int</a></span> between -1 and 255.
- </td>
- </tr>
- </tbody>
-
- </table>
- </dd>
- </dt>
- </dl>
- </p>
- </div>
- <div class="refsect1 returnvalues" id="refsect1-function.socket-get-option-returnvalues">
- <h3 class="title">Return Values</h3>
- <p class="para">
- Returns the value of the given option, or <b><tt>FALSE</tt></b> on errors.
- </p>
- </div>
- <div class="refsect1 examples" id="refsect1-function.socket-get-option-examples">
- <h3 class="title">Examples</h3>
- <p class="para">
- <div class="example" id="example-4081">
- <p><b>Example #1 <span class="function"><a href="function.socket-set-option.html" class="function">socket_set_option()</a></span> example</b></p>
- <div class="example-contents">
- <div class="phpcode"><code><span style="color: #000000">
- <span style="color: #0000BB"><?php<br />$socket </span><span style="color: #007700">= </span><span style="color: #0000BB">socket_create_listen</span><span style="color: #007700">(</span><span style="color: #0000BB">1223</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$linger </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'l_linger' </span><span style="color: #007700">=> </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">'l_onoff' </span><span style="color: #007700">=> </span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">socket_set_option</span><span style="color: #007700">(</span><span style="color: #0000BB">$socket</span><span style="color: #007700">, </span><span style="color: #0000BB">SOL_SOCKET</span><span style="color: #007700">, </span><span style="color: #0000BB">SO_LINGER</span><span style="color: #007700">, </span><span style="color: #0000BB">$linger</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">socket_get_option</span><span style="color: #007700">(</span><span style="color: #0000BB">$socket</span><span style="color: #007700">, </span><span style="color: #0000BB">SOL_SOCKET</span><span style="color: #007700">, </span><span style="color: #0000BB">SO_REUSEADDR</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?></span>
- </span>
- </code></div>
- </div>
- </div>
- </p>
- </div>
- <div class="refsect1 changelog" id="refsect1-function.socket-get-option-changelog">
- <h3 class="title">Changelog</h3>
- <p class="para">
- <table class="doctable informaltable">
-
- <thead valign="middle">
- <tr valign="middle">
- <th>Version</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody valign="middle" class="tbody">
- <tr valign="middle">
- <td align="left">4.3.0</td>
- <td align="left">
- The name of this function was changed. It used to be called
- <i>socket_getopt()</i>.
- </td>
- </tr>
- </tbody>
-
- </table>
- </p>
- </div>
- </div><hr /><div class="manualnavbar" style="text-align: center;">
- <div class="prev" style="text-align: left; float: left;"><a href="function.socket-create.html">socket_create</a></div>
- <div class="next" style="text-align: right; float: right;"><a href="function.socket-getpeername.html">socket_getpeername</a></div>
- <div class="up"><a href="ref.sockets.html">Socket Functions</a></div>
- <div class="home"><a href="index.html">PHP Manual</a></div>
- </div></body></html>