<?php

// Start of sockets v.

/**
 * Runs the select() system call on the given arrays of sockets with a specified timeout
 * @link http://www.php.net/manual/en/function.socket-select.php
 * @param read array <p>
 * The sockets listed in the read array will be
 * watched to see if characters become available for reading (more
 * precisely, to see if a read will not block - in particular, a socket
 * resource is also ready on end-of-file, in which case a
 * socket_read will return a zero length string).
 * </p>
 * @param write array <p>
 * The sockets listed in the write array will be
 * watched to see if a write will not block.
 * </p>
 * @param except array <p>
 * The sockets listed in the except array will be
 * watched for exceptions.
 * </p>
 * @param tv_sec int <p>
 * The tv_sec and tv_usec
 * together form the timeout parameter. The
 * timeout is an upper bound on the amount of time
 * elapsed before socket_select return.
 * tv_sec may be zero , causing
 * socket_select to return immediately. This is useful
 * for polling. If tv_sec is &null; (no timeout),
 * socket_select can block indefinitely.
 * </p>
 * @param tv_usec int[optional] <p>
 * </p>
 * @return int On success socket_select returns the number of
 * socket resources contained in the modified arrays, which may be zero if
 * the timeout expires before anything interesting happens. On error false
 * is returned. The error code can be retrieved with
 * socket_last_error.
 * </p>
 * <p>
 * Be sure to use the === operator when checking for an
 * error. Since the socket_select may return 0 the
 * comparison with == would evaluate to true:
 * Understanding socket_select's result
 * ]]>
 */
function socket_select (array &$read, array &$write, array &$except, $tv_sec, $tv_usec = null) {}

/**
 * Create a socket (endpoint for communication)
 * @link http://www.php.net/manual/en/function.socket-create.php
 * @param domain int <p>
 * The domain parameter specifies the protocol
 * family to be used by the socket.
 * </p>
 * <table>
 * Available address/protocol families
 * <tr valign="top">
 * <td>Domain</td>
 * <td>Description</td>
 * </tr>
 * <tr valign="top">
 * <td>AF_INET</td>
 * <td>
 * IPv4 Internet based protocols. TCP and UDP are common protocols of
 * this protocol family.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>AF_INET6</td>
 * <td>
 * IPv6 Internet based protocols. TCP and UDP are common protocols of
 * this protocol family.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>AF_UNIX</td>
 * <td>
 * Local communication protocol family. High efficiency and low
 * overhead make it a great form of IPC (Interprocess Communication).
 * </td>
 * </tr>
 * </table>
 * @param type int <p>
 * The type parameter selects the type of communication
 * to be used by the socket.
 * </p>
 * <table>
 * Available socket types
 * <tr valign="top">
 * <td>Type</td>
 * <td>Description</td>
 * </tr>
 * <tr valign="top">
 * <td>SOCK_STREAM</td>
 * <td>
 * Provides sequenced, reliable, full-duplex, connection-based byte streams.
 * An out-of-band data transmission mechanism may be supported.
 * The TCP protocol is based on this socket type.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SOCK_DGRAM</td>
 * <td>
 * Supports datagrams (connectionless, unreliable messages of a fixed maximum length).
 * The UDP protocol is based on this socket type.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SOCK_SEQPACKET</td>
 * <td>
 * Provides a sequenced, reliable, two-way connection-based data transmission path for
 * datagrams of fixed maximum length; a consumer is required to read an
 * entire packet with each read call.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SOCK_RAW</td>
 * <td>
 * Provides raw network protocol access. This special type of socket
 * can be used to manually construct any type of protocol. A common use
 * for this socket type is to perform ICMP requests (like ping).
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SOCK_RDM</td>
 * <td>
 * Provides a reliable datagram layer that does not guarantee ordering.
 * This is most likely not implemented on your operating system.
 * </td>
 * </tr>
 * </table>
 * @param protocol int <p>
 * The protocol parameter sets the specific
 * protocol within the specified domain to be used
 * when communicating on the returned socket. The proper value can be
 * retrieved by name by using getprotobyname. If
 * the desired protocol is TCP, or UDP the corresponding constants
 * SOL_TCP, and SOL_UDP
 * can also be used.
 * </p>
 * <table>
 * Common protocols
 * <tr valign="top">
 * <td>Name</td>
 * <td>Description</td>
 * </tr>
 * <tr valign="top">
 * <td>icmp</td>
 * <td>
 * The Internet Control Message Protocol is used primarily by gateways
 * and hosts to report errors in datagram communication. The "ping"
 * command (present in most modern operating systems) is an example
 * application of ICMP.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>udp</td>
 * <td>
 * The User Datagram Protocol is a connectionless, unreliable,
 * protocol with fixed record lengths. Due to these aspects, UDP
 * requires a minimum amount of protocol overhead.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>tcp</td>
 * <td>
 * The Transmission Control Protocol is a reliable, connection based,
 * stream oriented, full duplex protocol. TCP guarantees that all data packets
 * will be received in the order in which they were sent. If any packet is somehow
 * lost during communication, TCP will automatically retransmit the packet until
 * the destination host acknowledges that packet. For reliability and performance
 * reasons, the TCP implementation itself decides the appropriate octet boundaries
 * of the underlying datagram communication layer. Therefore, TCP applications must
 * allow for the possibility of partial record transmission.
 * </td>
 * </tr>
 * </table>
 * @return resource socket_create returns a socket resource on success,
 * or false on error. The actual error code can be retrieved by calling
 * socket_last_error. This error code may be passed to
 * socket_strerror to get a textual explanation of the
 * error.
 */
function socket_create ($domain, $type, $protocol) {}

/**
 * Opens a socket on port to accept connections
 * @link http://www.php.net/manual/en/function.socket-create-listen.php
 * @param port int <p>
 * The port on which to listen on all interfaces.
 * </p>
 * @param backlog int[optional] <p>
 * The backlog parameter defines the maximum length
 * the queue of pending connections may grow to.
 * SOMAXCONN may be passed as
 * backlog parameter, see
 * socket_listen for more information.
 * </p>
 * @return resource socket_create_listen returns a new socket resource
 * on success or false on error. The error code can be retrieved with
 * socket_last_error. This code may be passed to
 * socket_strerror to get a textual explanation of the
 * error.
 */
function socket_create_listen ($port, $backlog = null) {}

/**
 * Creates a pair of indistinguishable sockets and stores them in an array
 * @link http://www.php.net/manual/en/function.socket-create-pair.php
 * @param domain int <p>
 * The domain parameter specifies the protocol
 * family to be used by the socket. See socket_create
 * for the full list.
 * </p>
 * @param type int <p>
 * The type parameter selects the type of communication
 * to be used by the socket. See socket_create for the 
 * full list.
 * </p>
 * @param protocol int <p>
 * The protocol parameter sets the specific
 * protocol within the specified domain to be used
 * when communicating on the returned socket. The proper value can be retrieved by
 * name by using getprotobyname. If
 * the desired protocol is TCP, or UDP the corresponding constants
 * SOL_TCP, and SOL_UDP
 * can also be used.
 * </p>
 * <p>
 * See socket_create for the full list of supported 
 * protocols.
 * </p>
 * @param fd array <p>
 * Reference to an array in which the two socket resources will be inserted.
 * </p>
 * @return bool Returns true on success or false on failure.
 */
function socket_create_pair ($domain, $type, $protocol, array &$fd) {}

/**
 * Accepts a connection on a socket
 * @link http://www.php.net/manual/en/function.socket-accept.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create.
 * </p>
 * @return resource a new socket resource on success, or false on error. The actual
 * error code can be retrieved by calling
 * socket_last_error. This error code may be passed to
 * socket_strerror to get a textual explanation of the
 * error.
 */
function socket_accept ($socket) {}

/**
 * Sets nonblocking mode for file descriptor fd
 * @link http://www.php.net/manual/en/function.socket-set-nonblock.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @return bool Returns true on success or false on failure.
 */
function socket_set_nonblock ($socket) {}

/**
 * Sets blocking mode on a socket resource
 * @link http://www.php.net/manual/en/function.socket-set-block.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @return bool Returns true on success or false on failure.
 */
function socket_set_block ($socket) {}

/**
 * Listens for a connection on a socket
 * @link http://www.php.net/manual/en/function.socket-listen.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create.
 * </p>
 * @param backlog int[optional] <p>
 * A maximum of backlog incoming connections will be
 * queued for processing. If a connection request arrives with the queue
 * full the client may receive an error with an indication of
 * ECONNREFUSED, or, if the underlying protocol supports
 * retransmission, the request may be ignored so that retries may succeed.
 * </p>
 * <p>
 * The maximum number passed to the backlog
 * parameter highly depends on the underlying platform. On Linux, it is
 * silently truncated to SOMAXCONN. On win32, if
 * passed SOMAXCONN, the underlying service provider
 * responsible for the socket will set the backlog to a maximum
 * reasonable value. There is no standard provision to
 * find out the actual backlog value on this platform.
 * </p>
 * @return bool Returns true on success or false on failure. The error code can be retrieved with
 * socket_last_error. This code may be passed to
 * socket_strerror to get a textual explanation of the
 * error.
 */
function socket_listen ($socket, $backlog = null) {}

/**
 * Closes a socket resource
 * @link http://www.php.net/manual/en/function.socket-close.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @return void 
 */
function socket_close ($socket) {}

/**
 * Write to a socket
 * @link http://www.php.net/manual/en/function.socket-write.php
 * @param socket resource <p>
 * </p>
 * @param buffer string <p>
 * The buffer to be written.
 * </p>
 * @param length int[optional] <p>
 * The optional parameter length can specify an
 * alternate length of bytes written to the socket. If this length is
 * greater than the buffer length, it is silently truncated to the length
 * of the buffer.
 * </p>
 * @return int the number of bytes successfully written to the socket or false on failure.
 * The error code can be retrieved with
 * socket_last_error. This code may be passed to
 * socket_strerror to get a textual explanation of the
 * error.
 * </p>
 * <p>
 * It is perfectly valid for socket_write to
 * return zero which means no bytes have been written. Be sure to use the
 * === operator to check for false in case of an
 * error.
 */
function socket_write ($socket, $buffer, $length = null) {}

/**
 * Reads a maximum of length bytes from a socket
 * @link http://www.php.net/manual/en/function.socket-read.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @param length int <p>
 * The maximum number of bytes read is specified by the
 * length parameter. Otherwise you can use
 * &#92;r, &#92;n,
 * or &#92;0 to end reading (depending on the type
 * parameter, see below).
 * </p>
 * @param type int[optional] <p>
 * Optional type parameter is a named constant:
 * PHP_BINARY_READ (Default) - use the system
 * recv() function. Safe for reading binary data.
 * @return string socket_read returns the data as a string on success,
 * or false on error (including if the remote host has closed the
 * connection). The error code can be retrieved with
 * socket_last_error. This code may be passed to
 * socket_strerror to get a textual representation of
 * the error.
 * </p>
 * <p>
 * socket_read returns a zero length string ("")
 * when there is no more data to read.
 */
function socket_read ($socket, $length, $type = null) {}

/**
 * Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
 * @link http://www.php.net/manual/en/function.socket-getsockname.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create 
 * or socket_accept.
 * </p>
 * @param addr string <p>
 * If the given socket is of type AF_INET
 * or AF_INET6, socket_getsockname
 * will return the local IP address in appropriate notation (e.g.
 * 127.0.0.1 or fe80::1) in the
 * address parameter and, if the optional
 * port parameter is present, also the associated port.
 * </p>
 * <p>
 * If the given socket is of type AF_UNIX,
 * socket_getsockname will return the Unix filesystem
 * path (e.g. /var/run/daemon.sock) in the
 * address parameter.
 * </p>
 * @param port int[optional] <p>
 * If provided, this will hold the associated port.
 * </p>
 * @return bool Returns true on success or false on failure. socket_getsockname may also return
 * false if the socket type is not any of AF_INET,
 * AF_INET6, or AF_UNIX, in which
 * case the last socket error code is not updated.
 */
function socket_getsockname ($socket, &$addr, &$port = null) {}

/**
 * Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
 * @link http://www.php.net/manual/en/function.socket-getpeername.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @param address string <p>
 * If the given socket is of type AF_INET or
 * AF_INET6, socket_getpeername
 * will return the peers (remote) IP address in
 * appropriate notation (e.g. 127.0.0.1 or
 * fe80::1) in the address
 * parameter and, if the optional port parameter is
 * present, also the associated port.
 * </p>
 * <p>
 * If the given socket is of type AF_UNIX,
 * socket_getpeername will return the Unix filesystem
 * path (e.g. /var/run/daemon.sock) in the
 * address parameter.
 * </p>
 * @param port int[optional] <p>
 * If given, this will hold the port associated to
 * address.
 * </p>
 * @return bool Returns true on success or false on failure. socket_getpeername may also return
 * false if the socket type is not any of AF_INET,
 * AF_INET6, or AF_UNIX, in which
 * case the last socket error code is not updated.
 */
function socket_getpeername ($socket, &$address, &$port = null) {}

/**
 * Initiates a connection on a socket
 * @link http://www.php.net/manual/en/function.socket-connect.php
 * @param socket resource <p>
 * </p>
 * @param address string <p>
 * The address parameter is either an IPv4 address
 * in dotted-quad notation (e.g. 127.0.0.1) if 
 * socket is AF_INET, a valid 
 * IPv6 address (e.g. ::1) if IPv6 support is enabled and 
 * socket is AF_INET6
 * or the pathname of a Unix domain socket, if the socket family is
 * AF_UNIX.
 * </p>
 * @param port int[optional] <p>
 * The port parameter is only used and is mandatory
 * when connecting to an AF_INET or an 
 * AF_INET6 socket, and designates
 * the port on the remote host to which a connection should be made.
 * </p>
 * @return bool Returns true on success or false on failure. The error code can be retrieved with
 * socket_last_error. This code may be passed to
 * socket_strerror to get a textual explanation of the
 * error.
 * </p>
 * <p>
 * If the socket is non-blocking then this function returns false with an
 * error Operation now in progress.
 */
function socket_connect ($socket, $address, $port = null) {}

/**
 * Return a string describing a socket error
 * @link http://www.php.net/manual/en/function.socket-strerror.php
 * @param errno int <p>
 * A valid socket error number, likely produced by 
 * socket_last_error.
 * </p>
 * @return string the error message associated with the errno
 * parameter.
 */
function socket_strerror ($errno) {}

/**
 * Binds a name to a socket
 * @link http://www.php.net/manual/en/function.socket-bind.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create.
 * </p>
 * @param address string <p>
 * If the socket is of the AF_INET family, the
 * address is an IP in dotted-quad notation
 * (e.g. 127.0.0.1).
 * </p>
 * <p>
 * If the socket is of the AF_UNIX family, the
 * address is the path of a
 * Unix-domain socket (e.g. /tmp/my.sock).
 * </p>
 * @param port int[optional] <p>
 * The port parameter is only used when
 * binding an AF_INET socket, and designates
 * the port on which to listen for connections.
 * </p>
 * @return bool Returns true on success or false on failure.
 * </p>
 * <p>
 * The error code can be retrieved with socket_last_error.
 * This code may be passed to socket_strerror to get a
 * textual explanation of the error.
 */
function socket_bind ($socket, $address, $port = null) {}

/**
 * Receives data from a connected socket
 * @link http://www.php.net/manual/en/function.socket-recv.php
 * @param socket resource <p>
 * The socket must be a socket resource previously
 * created by socket_create().
 * </p>
 * @param buf string <p>
 * The data received will be fetched to the variable specified with
 * buf. If an error occurs, if the
 * connection is reset, or if no data is
 * available, buf will be set to &null;.
 * </p>
 * @param len int <p>
 * Up to len bytes will be fetched from remote host.
 * </p>
 * @param flags int <p>
 * The value of flags can be any combination of 
 * the following flags, joined with the binary OR (|)
 * operator.
 * </p>
 * <table>
 * Possible values for flags
 * <tr valign="top">
 * <td>Flag</td>
 * <td>Description</td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_OOB</td>
 * <td>
 * Process out-of-band data.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_PEEK</td>
 * <td>
 * Receive data from the beginning of the receive queue without
 * removing it from the queue.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_WAITALL</td>
 * <td>
 * Block until at least len are received.
 * However, if a signal is caught or the remote host disconnects, the
 * function may return less data.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_DONTWAIT</td>
 * <td>
 * With this flag set, the function returns even if it would normally
 * have blocked.
 * </td>
 * </tr>
 * </table>
 * @return int socket_recv returns the number of bytes received,
 * or false if there was an error. The actual error code can be retrieved by 
 * calling socket_last_error. This error code may be
 * passed to socket_strerror to get a textual explanation
 * of the error.
 */
function socket_recv ($socket, &$buf, $len, $flags) {}

/**
 * Sends data to a connected socket
 * @link http://www.php.net/manual/en/function.socket-send.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @param buf string <p>
 * A buffer containing the data that will be sent to the remote host.
 * </p>
 * @param len int <p>
 * The number of bytes that will be sent to the remote host from 
 * buf.
 * </p>
 * @param flags int <p>
 * The value of flags can be any combination of 
 * the following flags, joined with the binary OR (|)
 * operator.
 * <table>
 * Possible values for flags
 * <tr valign="top">
 * <td>MSG_OOB</td>
 * <td>
 * Send OOB (out-of-band) data.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_EOR</td>
 * <td>
 * Indicate a record mark. The sent data completes the record.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_EOF</td>
 * <td>
 * Close the sender side of the socket and include an appropriate
 * notification of this at the end of the sent data. The sent data
 * completes the transaction.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_DONTROUTE</td>
 * <td>
 * Bypass routing, use direct interface.
 * </td>
 * </tr>
 * </table>
 * </p>
 * @return int socket_send returns the number of bytes sent, or false on error.
 */
function socket_send ($socket, $buf, $len, $flags) {}

/**
 * Receives data from a socket whether or not it is connection-oriented
 * @link http://www.php.net/manual/en/function.socket-recvfrom.php
 * @param socket resource <p>
 * The socket must be a socket resource previously
 * created by socket_create().
 * </p>
 * @param buf string <p>
 * The data received will be fetched to the variable specified with
 * buf.
 * </p>
 * @param len int <p>
 * Up to len bytes will be fetched from remote host.
 * </p>
 * @param flags int <p>
 * The value of flags can be any combination of 
 * the following flags, joined with the binary OR (|)
 * operator.
 * </p>
 * <table>
 * Possible values for flags
 * <tr valign="top">
 * <td>Flag</td>
 * <td>Description</td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_OOB</td>
 * <td>
 * Process out-of-band data.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_PEEK</td>
 * <td>
 * Receive data from the beginning of the receive queue without
 * removing it from the queue.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_WAITALL</td>
 * <td>
 * Block until at least len are received.
 * However, if a signal is caught or the remote host disconnects, the
 * function may return less data.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_DONTWAIT</td>
 * <td>
 * With this flag set, the function returns even if it would normally
 * have blocked.
 * </td>
 * </tr>
 * </table>
 * @param name string <p>
 * If the socket is of the type AF_UNIX type,
 * name is the path to the file. Else, for
 * unconnected sockets, name is the IP address of,
 * the remote host, or &null; if the socket is connection-oriented.
 * </p>
 * @param port int[optional] <p>
 * This argument only applies to AF_INET and
 * AF_INET6 sockets, and specifies the remote port
 * from which the data is received. If the socket is connection-oriented,
 * port will be &null;.
 * </p>
 * @return int socket_recvfrom returns the number of bytes received,
 * or false if there was an error. The actual error code can be retrieved by 
 * calling socket_last_error. This error code may be
 * passed to socket_strerror to get a textual explanation
 * of the error.
 */
function socket_recvfrom ($socket, &$buf, $len, $flags, &$name, &$port = null) {}

/**
 * Sends a message to a socket, whether it is connected or not
 * @link http://www.php.net/manual/en/function.socket-sendto.php
 * @param socket resource <p>
 * A valid socket resource created using socket_create.
 * </p>
 * @param buf string <p>
 * The sent data will be taken from buffer buf.
 * </p>
 * @param len int <p>
 * len bytes from buf will be
 * sent.
 * </p>
 * @param flags int <p>
 * The value of flags can be any combination of 
 * the following flags, joined with the binary OR (|)
 * operator.
 * <table>
 * Possible values for flags
 * <tr valign="top">
 * <td>MSG_OOB</td>
 * <td>
 * Send OOB (out-of-band) data.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_EOR</td>
 * <td>
 * Indicate a record mark. The sent data completes the record.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_EOF</td>
 * <td>
 * Close the sender side of the socket and include an appropriate
 * notification of this at the end of the sent data. The sent data
 * completes the transaction.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MSG_DONTROUTE</td>
 * <td>
 * Bypass routing, use direct interface.
 * </td>
 * </tr>
 * </table>
 * </p>
 * @param addr string <p>
 * IP address of the remote host.
 * </p>
 * @param port int[optional] <p>
 * port is the remote port number at which the data
 * will be sent.
 * </p>
 * @return int socket_sendto returns the number of bytes sent to the
 * remote host, or false if an error occurred.
 */
function socket_sendto ($socket, $buf, $len, $flags, $addr, $port = null) {}

/**
 * Gets socket options for the socket
 * @link http://www.php.net/manual/en/function.socket-get-option.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @param level int <p>
 * The level parameter specifies the protocol
 * level at which the option resides. For example, to retrieve options at
 * the socket level, a level 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 getprotobyname function.
 * </p>
 * @param optname int <table>
 * Available Socket Options
 * <tr valign="top">
 * <td>Option</td>
 * <td>Description</td>
 * <td>Type</td>
 * </tr>
 * <tr valign="top">
 * <td>SO_DEBUG</td>
 * <td>
 * Reports whether debugging information is being recorded.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_BROADCAST</td>
 * <td>
 * Reports whether transmission of broadcast messages is supported.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_REUSEADDR</td>
 * <td>
 * Reports whether local addresses can be reused.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_KEEPALIVE</td>
 * <td>
 * 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>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_LINGER</td>
 * <td>
 * <p>
 * Reports whether the socket lingers on 
 * socket_close 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, 
 * socket_close will wait for its peer to
 * acknowledge the data. 
 * </p>
 * <p>
 * If l_onoff is non-zero and 
 * l_linger 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>
 * On the other hand, if l_onoff is 
 * non-zero and l_linger is non-zero,
 * socket_close will block until all the data 
 * is sent or the time specified in l_linger
 * elapses. If the socket is non-blocking, 
 * socket_close will fail and return an error.
 * </p>
 * </td>
 * <td>
 * array. The array will contain two keys:
 * l_onoff and 
 * l_linger. 
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_OOBINLINE</td>
 * <td>
 * Reports whether the socket leaves out-of-band data inline.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_SNDBUF</td>
 * <td>
 * Reports the size of the send buffer.
 * </td>
 * <td>
 * int
 * </td> 
 * </tr>
 * <tr valign="top">
 * <td>SO_RCVBUF</td>
 * <td>
 * Reports the size of the receive buffer.
 * </td>
 * <td>
 * int
 * </td> 
 * </tr>
 * <tr valign="top">
 * <td>SO_ERROR</td>
 * <td>
 * Reports information about error status and clears it.
 * </td>
 * <td>
 * int (cannot be set by socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_TYPE</td>
 * <td>
 * Reports the socket type (e.g. 
 * SOCK_STREAM).
 * </td>
 * <td>
 * int (cannot be set by socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_DONTROUTE</td>
 * <td>
 * Reports whether outgoing messages bypass the standard routing facilities.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_RCVLOWAT</td>
 * <td>
 * Reports the minimum number of bytes to process for socket 
 * input operations.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_RCVTIMEO</td>
 * <td>
 * Reports the timeout value for input operations.
 * </td>
 * <td>
 * array. The array will contain two keys:
 * sec which is the seconds part on the timeout
 * value and usec which is the microsecond part 
 * of the timeout value. 
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_SNDTIMEO</td>
 * <td>
 * Reports the timeout value specifying the amount of time that an output
 * function blocks because flow control prevents data from being sent.
 * </td>
 * <td>
 * array. The array will contain two keys:
 * sec which is the seconds part on the timeout
 * value and usec which is the microsecond part 
 * of the timeout value. 
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>SO_SNDLOWAT</td>
 * <td>
 * Reports the minimum number of bytes to process for socket output operations.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>TCP_NODELAY</td>
 * <td>
 * Reports whether the Nagle TCP algorithm is disabled.
 * </td>
 * <td>
 * int
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MCAST_JOIN_GROUP</td>
 * <td>
 * Joins a multicast group. (added in PHP 5.4)
 * </td>
 * <td>
 * array with keys "group", specifying
 * a string with an IPv4 or IPv6 multicast address and
 * "interface", specifying either an interface
 * number (type int) or a string with
 * the interface name, like "eth0".
 * 0 can be specified to indicate the interface
 * should be selected using routing rules. (can only be used in
 * socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MCAST_LEAVE_GROUP</td>
 * <td>
 * Leaves a multicast group. (added in PHP 5.4)
 * </td>
 * <td>
 * array. See MCAST_JOIN_GROUP for
 * more information. (can only be used in
 * socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MCAST_BLOCK_SOURCE</td>
 * <td>
 * 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>
 * array with the same keys as
 * MCAST_JOIN_GROUP, plus one extra key,
 * source, which maps to a string
 * specifying an IPv4 or IPv6 address of the source to be blocked.
 * (can only be used in socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MCAST_UNBLOCK_SOURCE</td>
 * <td>
 * 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>
 * array with the same format as
 * MCAST_BLOCK_SOURCE.
 * (can only be used in socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MCAST_JOIN_SOURCE_GROUP</td>
 * <td>
 * Receive packets destined to a specific multicast group whose source
 * address matches a specific value. (added in PHP 5.4)
 * </td>
 * <td>
 * array with the same format as
 * MCAST_BLOCK_SOURCE.
 * (can only be used in socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>MCAST_LEAVE_SOURCE_GROUP</td>
 * <td>
 * Stop receiving packets destined to a specific multicast group whose
 * soure address matches a specific value. (added in PHP 5.4)
 * </td>
 * <td>
 * array with the same format as
 * MCAST_BLOCK_SOURCE.
 * (can only be used in socket_set_option)
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>IP_MULTICAST_IF</td>
 * <td>
 * The outgoing interface for IPv4 multicast packets.
 * (added in PHP 5.4)
 * </td>
 * <td>
 * Either int specifying the interface number or a
 * string with an interface name, like
 * eth0. The value 0 can be used to
 * indicate the routing table is to used in the interface selection.
 * The function socket_get_option returns an
 * interface index.
 * Note that, unlike the C API, this option does NOT take an IP
 * address. This eliminates the interface difference between
 * IP_MULTICAST_IF and
 * IPV6_MULTICAST_IF.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>IPV6_MULTICAST_IF</td>
 * <td>
 * The outgoing interface for IPv6 multicast packets.
 * (added in PHP 5.4)
 * </td>
 * <td>
 * The same as IP_MULTICAST_IF.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>IP_MULTICAST_LOOP</td>
 * <td>
 * 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>
 * int (either 0 or
 * 1). For socket_set_option
 * any value will be accepted and will be converted to a boolean
 * following the usual PHP rules.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>IPV6_MULTICAST_LOOP</td>
 * <td>
 * Analogous to IP_MULTICAST_LOOP, but for IPv6.
 * (added in PHP 5.4)
 * </td>
 * <td>
 * int. See IP_MULTICAST_LOOP.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>IP_MULTICAST_TTL</td>
 * <td>
 * 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>
 * int between 0 and 255.
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>IPV6_MULTICAST_HOPS</td>
 * <td>
 * Analogous to IP_MULTICAST_TTL, but for IPv6
 * packets. The value -1 is also accepted, meaning the route default
 * should be used.
 * (added in PHP 5.4)
 * </td>
 * <td>
 * int between -1 and 255.
 * </td>
 * </tr>
 * </table>
 * @return mixed the value of the given option, or false on errors.
 */
function socket_get_option ($socket, $level, $optname) {}

/**
 * Sets socket options for the socket
 * @link http://www.php.net/manual/en/function.socket-set-option.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create
 * or socket_accept.
 * </p>
 * @param level int <p>
 * The level parameter specifies the protocol
 * level at which the option resides. For example, to retrieve options at
 * the socket level, a level 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 
 * getprotobyname function.
 * </p>
 * @param optname int <p>
 * The available socket options are the same as those for the
 * socket_get_option function.
 * </p>
 * @param optval mixed <p>
 * The option value.
 * </p>
 * @return bool Returns true on success or false on failure.
 */
function socket_set_option ($socket, $level, $optname, $optval) {}

/**
 * Shuts down a socket for receiving, sending, or both
 * @link http://www.php.net/manual/en/function.socket-shutdown.php
 * @param socket resource <p>
 * A valid socket resource created with socket_create.
 * </p>
 * @param how int[optional] <p>
 * The value of how can be one of the following:
 * <table>
 * possible values for how
 * <tr valign="top">
 * <td>0</td>
 * <td>
 * Shutdown socket reading
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>1</td>
 * <td>
 * Shutdown socket writing
 * </td>
 * </tr>
 * <tr valign="top">
 * <td>2</td>
 * <td>
 * Shutdown socket reading and writing
 * </td>
 * </tr>
 * </table>
 * </p>
 * @return bool Returns true on success or false on failure.
 */
function socket_shutdown ($socket, $how = null) {}

/**
 * Returns the last error on the socket
 * @link http://www.php.net/manual/en/function.socket-last-error.php
 * @param socket resource[optional] <p>
 * A valid socket resource created with socket_create.
 * </p>
 * @return int This function returns a socket error code.
 */
function socket_last_error ($socket = null) {}

/**
 * Clears the error on the socket or the last error code
 * @link http://www.php.net/manual/en/function.socket-clear-error.php
 * @param socket resource[optional] <p>
 * A valid socket resource created with socket_create.
 * </p>
 * @return void 
 */
function socket_clear_error ($socket = null) {}

/**
 * Import a stream
 * @link http://www.php.net/manual/en/function.socket-import-stream.php
 * @param stream resource <p>
 * The stream resource to import.
 * </p>
 * @return resource false or &null; on failure.
 */
function socket_import_stream ($stream) {}

/**
 * Send a message
 * @link http://www.php.net/manual/en/function.socket-sendmsg.php
 * @param socket resource <p>
 * </p>
 * @param message array <p>
 * </p>
 * @param flags int <p>
 * </p>
 * @return int 
 */
function socket_sendmsg ($socket, array $message, $flags) {}

/**
 * Read a message
 * @link http://www.php.net/manual/en/function.socket-recvmsg.php
 * @param socket resource <p>
 * </p>
 * @param message string <p>
 * </p>
 * @param flags int[optional] <p>
 * </p>
 * @return int 
 */
function socket_recvmsg ($socket, $message, $flags = null) {}

/**
 * Calculate message buffer size
 * @link http://www.php.net/manual/en/function.socket-cmsg-space.php
 * @param level int <p>
 * </p>
 * @param type int <p>
 * </p>
 * @return int 
 */
function socket_cmsg_space ($level, $type) {}

/**
 * @param socket
 * @param level
 * @param optname
 */
function socket_getopt ($socket, $level, $optname) {}

/**
 * @param socket
 * @param level
 * @param optname
 * @param optval
 */
function socket_setopt ($socket, $level, $optname, $optval) {}

define ('AF_UNIX', 1);
define ('AF_INET', 2);
define ('SOCK_STREAM', 1);
define ('SOCK_DGRAM', 2);
define ('SOCK_RAW', 3);
define ('SOCK_SEQPACKET', 5);
define ('SOCK_RDM', 4);
define ('MSG_OOB', 1);
define ('MSG_WAITALL', 8);
define ('MSG_CTRUNC', 512);
define ('MSG_TRUNC', 256);
define ('MSG_PEEK', 2);
define ('MSG_DONTROUTE', 4);
define ('SO_DEBUG', 1);
define ('SO_REUSEADDR', 4);
define ('SO_KEEPALIVE', 8);
define ('SO_DONTROUTE', 16);
define ('SO_LINGER', 128);
define ('SO_BROADCAST', 32);
define ('SO_OOBINLINE', 256);
define ('SO_SNDBUF', 4097);
define ('SO_RCVBUF', 4098);
define ('SO_SNDLOWAT', 4099);
define ('SO_RCVLOWAT', 4100);
define ('SO_SNDTIMEO', 4101);
define ('SO_RCVTIMEO', 4102);
define ('SO_TYPE', 4104);
define ('SO_ERROR', 4103);
define ('SOL_SOCKET', 65535);
define ('SOMAXCONN', 2147483647);
define ('TCP_NODELAY', 1);
define ('PHP_NORMAL_READ', 1);
define ('PHP_BINARY_READ', 2);
define ('MCAST_JOIN_GROUP', 41);
define ('MCAST_LEAVE_GROUP', 42);
define ('MCAST_BLOCK_SOURCE', 43);
define ('MCAST_UNBLOCK_SOURCE', 44);
define ('MCAST_JOIN_SOURCE_GROUP', 45);
define ('MCAST_LEAVE_SOURCE_GROUP', 46);
define ('IP_MULTICAST_IF', 9);
define ('IP_MULTICAST_TTL', 10);
define ('IP_MULTICAST_LOOP', 11);
define ('SOCKET_EINTR', 10004);
define ('SOCKET_EBADF', 10009);
define ('SOCKET_EACCES', 10013);
define ('SOCKET_EFAULT', 10014);
define ('SOCKET_EINVAL', 10022);
define ('SOCKET_EMFILE', 10024);
define ('SOCKET_EWOULDBLOCK', 10035);
define ('SOCKET_EINPROGRESS', 10036);
define ('SOCKET_EALREADY', 10037);
define ('SOCKET_ENOTSOCK', 10038);
define ('SOCKET_EDESTADDRREQ', 10039);
define ('SOCKET_EMSGSIZE', 10040);
define ('SOCKET_EPROTOTYPE', 10041);
define ('SOCKET_ENOPROTOOPT', 10042);
define ('SOCKET_EPROTONOSUPPORT', 10043);
define ('SOCKET_ESOCKTNOSUPPORT', 10044);
define ('SOCKET_EOPNOTSUPP', 10045);
define ('SOCKET_EPFNOSUPPORT', 10046);
define ('SOCKET_EAFNOSUPPORT', 10047);
define ('SOCKET_EADDRINUSE', 10048);
define ('SOCKET_EADDRNOTAVAIL', 10049);
define ('SOCKET_ENETDOWN', 10050);
define ('SOCKET_ENETUNREACH', 10051);
define ('SOCKET_ENETRESET', 10052);
define ('SOCKET_ECONNABORTED', 10053);
define ('SOCKET_ECONNRESET', 10054);
define ('SOCKET_ENOBUFS', 10055);
define ('SOCKET_EISCONN', 10056);
define ('SOCKET_ENOTCONN', 10057);
define ('SOCKET_ESHUTDOWN', 10058);
define ('SOCKET_ETOOMANYREFS', 10059);
define ('SOCKET_ETIMEDOUT', 10060);
define ('SOCKET_ECONNREFUSED', 10061);
define ('SOCKET_ELOOP', 10062);
define ('SOCKET_ENAMETOOLONG', 10063);
define ('SOCKET_EHOSTDOWN', 10064);
define ('SOCKET_EHOSTUNREACH', 10065);
define ('SOCKET_ENOTEMPTY', 10066);
define ('SOCKET_EPROCLIM', 10067);
define ('SOCKET_EUSERS', 10068);
define ('SOCKET_EDQUOT', 10069);
define ('SOCKET_ESTALE', 10070);
define ('SOCKET_EREMOTE', 10071);
define ('SOCKET_EDISCON', 10101);
define ('SOCKET_SYSNOTREADY', 10091);
define ('SOCKET_VERNOTSUPPORTED', 10092);
define ('SOCKET_NOTINITIALISED', 10093);
define ('SOCKET_HOST_NOT_FOUND', 11001);
define ('SOCKET_TRY_AGAIN', 11002);
define ('SOCKET_NO_RECOVERY', 11003);
define ('SOCKET_NO_DATA', 11004);
define ('SOCKET_NO_ADDRESS', 11004);
define ('IPPROTO_IP', 0);
define ('SOL_TCP', 6);
define ('SOL_UDP', 17);

// End of sockets v.
