## org.apache.tomcat.jni
Class Socket

    java.lang.Object
      org.apache.tomcat.jni.Socket

    public class Socket

extends java.lang.Object

Socket

Version:
  $Revision: 467222 $, $Date: 2006-10-24 05:17:11 +0200 (Tue, 24 Oct 2006) $
Author:
  Mladen Turk

Field Summary
`static int` `APR_INCOMPLETE_READ` Set on non-blocking sockets (timeout !
`static int` `APR_INCOMPLETE_WRITE` like APR_INCOMPLETE_READ, but for write
`static int` `APR_INET`
`static int` `APR_INET6`
`static int` `APR_IPV4_ADDR_OK` no longer allow read or write requests
`static int` `APR_IPV6_ADDR_OK`
`static int` `APR_IPV6_V6ONLY` Don't accept IPv4 connections on an IPv6 listening socket.
`static int` `APR_LOCAL` Enum to tell us if we're interested in remote or local socket apr_interface_e
`static int` `APR_PROTO_SCTP` UDP
`static int` `APR_PROTO_TCP`
`static int` `APR_PROTO_UDP` TCP
`static int` `APR_REMOTE`
`static int` `APR_RESET_NODELAY` This flag is ONLY set internally when we set APR_TCP_NOPUSH with APR_TCP_NODELAY set to tell us that APR_TCP_NODELAY should be turned on again when NOPUSH is turned off
`static int` `APR_SHUTDOWN_READ` Define what type of socket shutdown should occur.
`static int` `APR_SHUTDOWN_READWRITE` no longer allow write requests
`static int` `APR_SHUTDOWN_WRITE` no longer allow read request
`static int` `APR_SO_DEBUG` Keepalive
`static int` `APR_SO_DISCONNECTED` Receive buffer
`static int` `APR_SO_KEEPALIVE` Linger
`static int` `APR_SO_LINGER`
`static int` `APR_SO_NONBLOCK` Debug
`static int` `APR_SO_RCVBUF` Send buffer
`static int` `APR_SO_REUSEADDR` Non-blocking IO
`static int` `APR_SO_SNDBUF` Reuse addresses
`static int` `APR_TCP_DEFER_ACCEPT` Delay accepting of new connections until data is available.
`static int` `APR_TCP_NODELAY` For SCTP sockets, this is mapped to STCP_NODELAY internally.
`static int` `APR_TCP_NOPUSH`
`static int` `APR_UNSPEC`
`static int` `SOCK_DGRAM`
`static int` `SOCK_STREAM`
`static int` `SOCKET_GET_APRS`
`static int` `SOCKET_GET_IMPL`
`static int` `SOCKET_GET_POOL`
`static int` `SOCKET_GET_TYPE`

Constructor Summary
`Socket()`

Method Summary
`static long` `accept(long sock)` Accept a new connection request
`static int` `acceptfilter(long sock, java.lang.String name, java.lang.String args)` Set an OS level accept filter.
`static boolean` `atmark(long sock)` Query the specified socket if at the OOB/Urgent data mark
`static int` `bind(long sock, long sa)` Bind the socket to its associated port
`static int` `close(long thesocket)` Close a socket.
`static int` `connect(long sock, long sa)` Issue a connection request to a socket either on the same machine or a different one.
`static long` `create(int family, int type, int protocol, long cont)` Create a socket.
`static void` `destroy(long thesocket)` Destroy a pool associated with socket
`static int` `listen(long sock, int backlog)` Listen to a bound socket for connections.
`static int` `optGet(long sock, int opt)` Query socket options for the specified socket
`static int` `optSet(long sock, int opt, int on)` Setup socket options for the specified socket
`static long` `pool(long thesocket)` Create a child pool from associated socket pool.
`static int` `recv(long sock, byte[] buf, int offset, int nbytes)` Read data from a network.
`static int` `recvb(long sock, java.nio.ByteBuffer buf, int offset, int nbytes)` Read data from a network.
`static int` `recvbb(long sock, int offset, int nbytes)` Read data from a network using internally set ByteBuffer
`static int` `recvbbt(long sock, int offset, int nbytes, long timeout)` Read data from a network with timeout using internally set ByteBuffer
`static int` `recvbt(long sock, java.nio.ByteBuffer buf, int offset, int nbytes, long timeout)` Read data from a network with timeout.
`static int` `recvFrom(long from, long sock, int flags, byte[] buf, int offset, int nbytes)`
`static int` `recvt(long sock, byte[] buf, int offset, int nbytes, long timeout)` Read data from a network with timeout.
`static int` `send(long sock, byte[] buf, int offset, int len)` Send data over a network.
`static int` `sendb(long sock, java.nio.ByteBuffer buf, int offset, int len)` Send data over a network.
`static int` `sendbb(long sock, int offset, int len)` Send data over a network using internally set ByteBuffer
`static long` `sendfile(long sock, long file, byte[][] headers, byte[][] trailers, long offset, long len, int flags)` Send a file from an open file descriptor to a socket, along with optional headers and trailers.
`static long` `sendfilen(long sock, long file, long offset, long len, int flags)` Send a file without header and trailer arrays.
`static int` `sendto(long sock, long where, int flags, byte[] buf, int offset, int len)`
`static int` `sendv(long sock, byte[][] vec)` Send multiple packets of data over a network.
`static void` `setrbb(long sock, java.nio.ByteBuffer buf)` Set internal receive ByteBuffer.
`static void` `setsbb(long sock, java.nio.ByteBuffer buf)` Set internal send ByteBuffer.
`static int` `shutdown(long thesocket, int how)` Shutdown either reading, writing, or both sides of a socket.
`static long` `timeoutGet(long sock)` Query socket timeout for the specified socket
`static int` `timeoutSet(long sock, long t)` Setup socket timeout for the specified socket

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### SOCK_STREAM

    public static final int SOCK_STREAM

See Also:
  Constant Field Values

### SOCK_DGRAM

    public static final int SOCK_DGRAM

See Also:
  Constant Field Values

### APR_SO_LINGER

    public static final int APR_SO_LINGER

See Also:
  Constant Field Values

### APR_SO_KEEPALIVE

    public static final int APR_SO_KEEPALIVE

  Linger

  See Also:
    Constant Field Values

### APR_SO_DEBUG

    public static final int APR_SO_DEBUG

  Keepalive

  See Also:
    Constant Field Values

### APR_SO_NONBLOCK

    public static final int APR_SO_NONBLOCK

  Debug

  See Also:
    Constant Field Values

### APR_SO_REUSEADDR

    public static final int APR_SO_REUSEADDR

  Non-blocking IO

  See Also:
    Constant Field Values

### APR_SO_SNDBUF

    public static final int APR_SO_SNDBUF

  Reuse addresses

  See Also:
    Constant Field Values

### APR_SO_RCVBUF

    public static final int APR_SO_RCVBUF

  Send buffer

  See Also:
    Constant Field Values

### APR_SO_DISCONNECTED

    public static final int APR_SO_DISCONNECTED

  Receive buffer

  See Also:
    Constant Field Values

### APR_TCP_NODELAY

    public static final int APR_TCP_NODELAY

  For SCTP sockets, this is mapped to STCP_NODELAY internally.

  See Also:
    Constant Field Values

### APR_TCP_NOPUSH

    public static final int APR_TCP_NOPUSH

See Also:
  Constant Field Values

### APR_RESET_NODELAY

    public static final int APR_RESET_NODELAY

  This flag is ONLY set internally when we set APR_TCP_NOPUSH with APR_TCP_NODELAY set to tell us that APR_TCP_NODELAY should be turned on again when NOPUSH is turned off

  See Also:
    Constant Field Values

### APR_INCOMPLETE_READ

    public static final int APR_INCOMPLETE_READ

  Set on non-blocking sockets (timeout != 0) on which the previous read() did not fill a buffer completely. the next apr_socket_recv() will first call select()/poll() rather than going straight into read(). (Can also be set by an application to force a select()/poll() call before the next read, in cases where the app expects that an immediate read would fail.)

  See Also:
    Constant Field Values

### APR_INCOMPLETE_WRITE

    public static final int APR_INCOMPLETE_WRITE

  like APR_INCOMPLETE_READ, but for write

  See Also:
    Constant Field Values

### APR_IPV6_V6ONLY

    public static final int APR_IPV6_V6ONLY

  Don't accept IPv4 connections on an IPv6 listening socket.

  See Also:
    Constant Field Values

### APR_TCP_DEFER_ACCEPT

    public static final int APR_TCP_DEFER_ACCEPT

  Delay accepting of new connections until data is available.

  See Also:
    Constant Field Values

### APR_SHUTDOWN_READ

    public static final int APR_SHUTDOWN_READ

  Define what type of socket shutdown should occur. apr_shutdown_how_e enum

  See Also:
    Constant Field Values

### APR_SHUTDOWN_WRITE

    public static final int APR_SHUTDOWN_WRITE

  no longer allow read request

  See Also:
    Constant Field Values

### APR_SHUTDOWN_READWRITE

    public static final int APR_SHUTDOWN_READWRITE

  no longer allow write requests

  See Also:
    Constant Field Values

### APR_IPV4_ADDR_OK

    public static final int APR_IPV4_ADDR_OK

  no longer allow read or write requests

  See Also:
    Constant Field Values

### APR_IPV6_ADDR_OK

    public static final int APR_IPV6_ADDR_OK

See Also:
  Constant Field Values

### APR_UNSPEC

    public static final int APR_UNSPEC

See Also:
  Constant Field Values

### APR_INET

    public static final int APR_INET

See Also:
  Constant Field Values

### APR_INET6

    public static final int APR_INET6

See Also:
  Constant Field Values

### APR_PROTO_TCP

    public static final int APR_PROTO_TCP

See Also:
  Constant Field Values

### APR_PROTO_UDP

    public static final int APR_PROTO_UDP

  TCP

  See Also:
    Constant Field Values

### APR_PROTO_SCTP

    public static final int APR_PROTO_SCTP

  UDP

  See Also:
    Constant Field Values

### APR_LOCAL

    public static final int APR_LOCAL

  Enum to tell us if we're interested in remote or local socket apr_interface_e

  See Also:
    Constant Field Values

### APR_REMOTE

    public static final int APR_REMOTE

See Also:
  Constant Field Values

### SOCKET_GET_POOL

    public static final int SOCKET_GET_POOL

See Also:
  Constant Field Values

### SOCKET_GET_IMPL

    public static final int SOCKET_GET_IMPL

See Also:
  Constant Field Values

### SOCKET_GET_APRS

    public static final int SOCKET_GET_APRS

See Also:
  Constant Field Values

### SOCKET_GET_TYPE

    public static final int SOCKET_GET_TYPE

See Also:
  Constant Field Values

Constructor Detail

### Socket

    public Socket()

Method Detail

### create

    public static long create(int family,
                              int type,
                              int protocol,
                              long cont)
                       throws java.lang.Exception

  Create a socket.

  Parameters:
    `family` - The address family of the socket (e.g., APR_INET).
    `type` - The type of the socket (e.g., SOCK_STREAM).
    `protocol` - The protocol of the socket (e.g., APR_PROTO_TCP).
    `cont` - The parent pool to use
  Returns:
    The new socket that has been set up.
  Throws:
    `java.lang.Exception`

### shutdown

    public static int shutdown(long thesocket,
                               int how)

  Shutdown either reading, writing, or both sides of a socket.
  This does not actually close the socket descriptor, it just controls which calls are still valid on the socket.

  Parameters:
    `thesocket` - The socket to close
    `how` - How to shutdown the socket. One of:

         APR_SHUTDOWN_READ         no longer allow read requests
         APR_SHUTDOWN_WRITE        no longer allow write requests
         APR_SHUTDOWN_READWRITE    no longer allow read or write requests

### close

    public static int close(long thesocket)

  Close a socket.

  Parameters:
    `thesocket` - The socket to close

### destroy

    public static void destroy(long thesocket)

  Destroy a pool associated with socket

  Parameters:
    `thesocket` - The destroy

### bind

    public static int bind(long sock,
                           long sa)

  Bind the socket to its associated port

  Parameters:
    `sock` - The socket to bind
    `sa` - The socket address to bind to This may be where we will find out if there is any other process using the selected port.

### listen

    public static int listen(long sock,
                             int backlog)

  Listen to a bound socket for connections.

  Parameters:
    `sock` - The socket to listen on
    `backlog` - The number of outstanding connections allowed in the sockets listen queue. If this value is less than zero, the listen queue size is set to zero.

### accept

    public static long accept(long sock)
                       throws java.lang.Exception

  Accept a new connection request

  Parameters:
    `sock` - The socket we are listening on.
    `pool` - The pool for the new socket.
  Returns:
    A copy of the socket that is connected to the socket that made the connection request. This is the socket which should be used for all future communication.
  Throws:
    `java.lang.Exception`

### acceptfilter

    public static int acceptfilter(long sock,
                                   java.lang.String name,
                                   java.lang.String args)

  Set an OS level accept filter.

  Parameters:
    `sock` - The socket to put the accept filter on.
    `name` - The accept filter
    `args` - Any extra args to the accept filter. Passing NULL here removes the accept filter.

### atmark

    public static boolean atmark(long sock)

  Query the specified socket if at the OOB/Urgent data mark

  Parameters:
    `sock` - The socket to query
  Returns:
    True if socket is at the OOB/urgent mark, otherwise return false.

### connect

    public static int connect(long sock,
                              long sa)

  Issue a connection request to a socket either on the same machine or a different one.

  Parameters:
    `sock` - The socket we wish to use for our side of the connection
    `sa` - The address of the machine we wish to connect to.

### send

    public static int send(long sock,
                           byte[] buf,
                           int offset,
                           int len)

  Send data over a network.

       This functions acts like a blocking write by default.  To change
       this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
       socket option.

       It is possible for both bytes to be sent and an error to be returned.

       APR_EINTR is never returned.

  Parameters:
    `sock` - The socket to send the data over.
    `buf` - The buffer which contains the data to be sent.
    `offset` - Offset in the byte buffer.
    `len` - The number of bytes to write; (-1) for full array.
  Returns:
    The number of bytes send.

### sendb

    public static int sendb(long sock,
                            java.nio.ByteBuffer buf,
                            int offset,
                            int len)

  Send data over a network.

       This functions acts like a blocking write by default.  To change
       this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
       socket option.

       It is possible for both bytes to be sent and an error to be returned.

       APR_EINTR is never returned.

  Parameters:
    `sock` - The socket to send the data over.
    `buf` - The Byte buffer which contains the data to be sent.
    `offset` - The offset within the buffer array of the first buffer from which bytes are to be retrieved; must be non-negative and no larger than buf.length
    `len` - The maximum number of buffers to be accessed; must be non-negative and no larger than buf.length - offset
  Returns:
    The number of bytes send.

### sendbb

    public static int sendbb(long sock,
                             int offset,
                             int len)

  Send data over a network using internally set ByteBuffer

### sendv

    public static int sendv(long sock,
                            byte[][] vec)

  Send multiple packets of data over a network.

       This functions acts like a blocking write by default.  To change
       this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
       socket option.
       The number of bytes actually sent is stored in argument 3.

       It is possible for both bytes to be sent and an error to be returned.

       APR_EINTR is never returned.

  Parameters:
    `sock` - The socket to send the data over.
    `vec` - The array from which to get the data to send.

### sendto

    public static int sendto(long sock,
                             long where,
                             int flags,
                             byte[] buf,
                             int offset,
                             int len)

  Parameters:
    `sock` - The socket to send from
    `where` - The apr_sockaddr_t describing where to send the data
    `flags` - The flags to use
    `buf` - The data to send
    `offset` - Offset in the byte buffer.
    `len` - The length of the data to send

### recv

    public static int recv(long sock,
                           byte[] buf,
                           int offset,
                           int nbytes)

  Read data from a network.

       This functions acts like a blocking read by default.  To change
       this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
       socket option.
       The number of bytes actually received is stored in argument 3.

       It is possible for both bytes to be received and an APR_EOF or
       other error to be returned.

       APR_EINTR is never returned.

  Parameters:
    `sock` - The socket to read the data from.
    `buf` - The buffer to store the data in.
    `offset` - Offset in the byte buffer.
    `nbytes` - The number of bytes to read (-1) for full array.
  Returns:
    the number of bytes received.

### recvt

    public static int recvt(long sock,
                            byte[] buf,
                            int offset,
                            int nbytes,
                            long timeout)

  Read data from a network with timeout.

       This functions acts like a blocking read by default.  To change
       this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
       socket option.
       The number of bytes actually received is stored in argument 3.

       It is possible for both bytes to be received and an APR_EOF or
       other error to be returned.

       APR_EINTR is never returned.

  Parameters:
    `sock` - The socket to read the data from.
    `buf` - The buffer to store the data in.
    `offset` - Offset in the byte buffer.
    `nbytes` - The number of bytes to read (-1) for full array.
    `timeout` - The socket timeout in microseconds.
  Returns:
    the number of bytes received.

### recvb

    public static int recvb(long sock,
                            java.nio.ByteBuffer buf,
                            int offset,
                            int nbytes)

  Read data from a network.

       This functions acts like a blocking read by default.  To change
       this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
       socket option.
       The number of bytes actually received is stored in argument 3.

       It is possible for both bytes to be received and an APR_EOF or
       other error to be returned.

       APR_EINTR is never returned.

  Parameters:
    `sock` - The socket to read the data from.
    `buf` - The buffer to store the data in.
    `offset` - Offset in the byte buffer.
    `nbytes` - The number of bytes to read (-1) for full array.
  Returns:
    the number of bytes received.

### recvbb

    public static int recvbb(long sock,
                             int offset,
                             int nbytes)

  Read data from a network using internally set ByteBuffer

### recvbt

    public static int recvbt(long sock,
                             java.nio.ByteBuffer buf,
                             int offset,
                             int nbytes,
                             long timeout)

  Read data from a network with timeout.

       This functions acts like a blocking read by default.  To change
       this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
       socket option.
       The number of bytes actually received is stored in argument 3.

       It is possible for both bytes to be received and an APR_EOF or
       other error to be returned.

       APR_EINTR is never returned.

  Parameters:
    `sock` - The socket to read the data from.
    `buf` - The buffer to store the data in.
    `offset` - Offset in the byte buffer.
    `nbytes` - The number of bytes to read (-1) for full array.
    `timeout` - The socket timeout in microseconds.
  Returns:
    the number of bytes received.

### recvbbt

    public static int recvbbt(long sock,
                              int offset,
                              int nbytes,
                              long timeout)

  Read data from a network with timeout using internally set ByteBuffer

### recvFrom

    public static int recvFrom(long from,
                               long sock,
                               int flags,
                               byte[] buf,
                               int offset,
                               int nbytes)

  Parameters:
    `from` - The apr_sockaddr_t to fill in the recipient info
    `sock` - The socket to use
    `flags` - The flags to use
    `buf` - The buffer to use
    `offset` - Offset in the byte buffer.
    `nbytes` - The number of bytes to read (-1) for full array.
  Returns:
    the number of bytes received.

### optSet

    public static int optSet(long sock,
                             int opt,
                             int on)

  Setup socket options for the specified socket

  Parameters:
    `sock` - The socket to set up.
    `opt` - The option we would like to configure. One of:

         APR_SO_DEBUG      --  turn on debugging information
         APR_SO_KEEPALIVE  --  keep connections active
         APR_SO_LINGER     --  lingers on close if data is present
         APR_SO_NONBLOCK   --  Turns blocking on/off for socket
                               When this option is enabled, use
                               the APR_STATUS_IS_EAGAIN() macro to
                               see if a send or receive function
                               could not transfer data without
                               blocking.
         APR_SO_REUSEADDR  --  The rules used in validating addresses
                               supplied to bind should allow reuse
                               of local addresses.
         APR_SO_SNDBUF     --  Set the SendBufferSize
         APR_SO_RCVBUF     --  Set the ReceiveBufferSize

    `on` - Value for the option.

### optGet

    public static int optGet(long sock,
                             int opt)
                      throws java.lang.Exception

  Query socket options for the specified socket

  Parameters:
    `sock` - The socket to query
    `opt` - The option we would like to query. One of:

         APR_SO_DEBUG      --  turn on debugging information
         APR_SO_KEEPALIVE  --  keep connections active
         APR_SO_LINGER     --  lingers on close if data is present
         APR_SO_NONBLOCK   --  Turns blocking on/off for socket
         APR_SO_REUSEADDR  --  The rules used in validating addresses
                               supplied to bind should allow reuse
                               of local addresses.
         APR_SO_SNDBUF     --  Set the SendBufferSize
         APR_SO_RCVBUF     --  Set the ReceiveBufferSize
         APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
                               (Currently only used on Windows)

  Returns:
    Socket option returned on the call.
  Throws:
    `java.lang.Exception`

### timeoutSet

    public static int timeoutSet(long sock,
                                 long t)

  Setup socket timeout for the specified socket

  Parameters:
    `sock` - The socket to set up.
    `t` - Value for the timeout in microseconds.

         t > 0  -- read and write calls return APR_TIMEUP if specified time
                   elapsess with no data read or written
         t == 0 -- read and write calls never block
         t < 0  -- read and write calls block

### timeoutGet

    public static long timeoutGet(long sock)
                           throws java.lang.Exception

  Query socket timeout for the specified socket

  Parameters:
    `sock` - The socket to query
  Returns:
    Socket timeout returned from the query.
  Throws:
    `java.lang.Exception`

### sendfile

    public static long sendfile(long sock,
                                long file,
                                byte[][] headers,
                                byte[][] trailers,
                                long offset,
                                long len,
                                int flags)

  Send a file from an open file descriptor to a socket, along with optional headers and trailers.
  This functions acts like a blocking write by default. To change this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK socket option. The number of bytes actually sent is stored in the len parameter. The offset parameter is passed by reference for no reason; its value will never be modified by the apr_socket_sendfile() function.

  Parameters:
    `sock` - The socket to which we're writing
    `file` - The open file from which to read
    `headers` - Array containing the headers to send
    `trailers` - Array containing the trailers to send
    `offset` - Offset into the file where we should begin writing
    `len` - Number of bytes to send from the file
    `flags` - APR flags that are mapped to OS specific flags
  Returns:
    Number of bytes actually sent, including headers, file, and trailers

### sendfilen

    public static long sendfilen(long sock,
                                 long file,
                                 long offset,
                                 long len,
                                 int flags)

  Send a file without header and trailer arrays.

### pool

    public static long pool(long thesocket)
                     throws java.lang.Exception

  Create a child pool from associated socket pool.

  Parameters:
    `thesocket` - The socket to use
  Throws:
    `java.lang.Exception`

### setsbb

    public static void setsbb(long sock,
                              java.nio.ByteBuffer buf)

  Set internal send ByteBuffer. This function will preset internal Java ByteBuffer for consecutive sendbb calls.

  Parameters:
    `thesocket` - The socket to use
    `buf` - The ByteBuffer

### setrbb

    public static void setrbb(long sock,
                              java.nio.ByteBuffer buf)

  Set internal receive ByteBuffer. This function will preset internal Java ByteBuffer for consecutive revcvbb/recvbbt calls.

  Parameters:
    `thesocket` - The socket to use
    `buf` - The ByteBuffer

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.