org.apache.tomcat.jni

Class Socket

public class Socket extends Object

Socket

Version: $Revision: 832187 $, $Date: 2009-11-03 00:23:20 +0100 (Tue, 03 Nov 2009) $

Author: Mladen Turk

Field Summary
static intAPR_INCOMPLETE_READ
Set on non-blocking sockets (timeout !
static intAPR_INCOMPLETE_WRITE
like APR_INCOMPLETE_READ, but for write
static intAPR_INET
static intAPR_INET6
static intAPR_IPV4_ADDR_OK
no longer allow read or write requests
static intAPR_IPV6_ADDR_OK
static intAPR_IPV6_V6ONLY
Don't accept IPv4 connections on an IPv6 listening socket.
static intAPR_LOCAL
Enum to tell us if we're interested in remote or local socket apr_interface_e
static intAPR_PROTO_SCTP
UDP
static intAPR_PROTO_TCP
static intAPR_PROTO_UDP
TCP
static intAPR_REMOTE
static intAPR_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 intAPR_SHUTDOWN_READ
Define what type of socket shutdown should occur. apr_shutdown_how_e enum
static intAPR_SHUTDOWN_READWRITE
no longer allow write requests
static intAPR_SHUTDOWN_WRITE
no longer allow read request
static intAPR_SO_DEBUG
Keepalive
static intAPR_SO_DISCONNECTED
Receive buffer
static intAPR_SO_KEEPALIVE
Linger
static intAPR_SO_LINGER
static intAPR_SO_NONBLOCK
Debug
static intAPR_SO_RCVBUF
Send buffer
static intAPR_SO_REUSEADDR
Non-blocking IO
static intAPR_SO_SNDBUF
Reuse addresses
static intAPR_TCP_DEFER_ACCEPT
Delay accepting of new connections until data is available.
static intAPR_TCP_NODELAY
For SCTP sockets, this is mapped to STCP_NODELAY internally.
static intAPR_TCP_NOPUSH
static intAPR_UNSPEC
static intSOCKET_GET_APRS
static intSOCKET_GET_IMPL
static intSOCKET_GET_POOL
static intSOCKET_GET_TYPE
static intSOCK_DGRAM
static intSOCK_STREAM
Method Summary
static longaccept(long sock)
Accept a new connection request
static intacceptfilter(long sock, String name, String args)
Set an OS level accept filter.
static longacceptx(long sock, long pool)
Accept a new connection request
static booleanatmark(long sock)
Query the specified socket if at the OOB/Urgent data mark
static intbind(long sock, long sa)
Bind the socket to its associated port
static intclose(long thesocket)
Close a socket.
static intconnect(long sock, long sa)
Issue a connection request to a socket either on the same machine or a different one.
static longcreate(int family, int type, int protocol, long cont)
Create a socket.
static voiddestroy(long thesocket)
Destroy a pool associated with socket
static intlisten(long sock, int backlog)
Listen to a bound socket for connections.
static intoptGet(long sock, int opt)
Query socket options for the specified socket
static intoptSet(long sock, int opt, int on)
Setup socket options for the specified socket
static longpool(long thesocket)
Create a child pool from associated socket pool.
static intrecv(long sock, byte[] buf, int offset, int nbytes)
Read data from a network.
static intrecvb(long sock, ByteBuffer buf, int offset, int nbytes)
Read data from a network.
static intrecvbb(long sock, int offset, int nbytes)
Read data from a network using internally set ByteBuffer
static intrecvbbt(long sock, int offset, int nbytes, long timeout)
Read data from a network with timeout using internally set ByteBuffer
static intrecvbt(long sock, ByteBuffer buf, int offset, int nbytes, long timeout)
Read data from a network with timeout.
static intrecvfrom(long from, long sock, int flags, byte[] buf, int offset, int nbytes)
static intrecvt(long sock, byte[] buf, int offset, int nbytes, long timeout)
Read data from a network with timeout.
static intsend(long sock, byte[] buf, int offset, int len)
Send data over a network.
static intsendb(long sock, ByteBuffer buf, int offset, int len)
Send data over a network.
static intsendbb(long sock, int offset, int len)
Send data over a network using internally set ByteBuffer
static longsendfile(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 longsendfilen(long sock, long file, long offset, long len, int flags)
Send a file without header and trailer arrays.
static intsendto(long sock, long where, int flags, byte[] buf, int offset, int len)
static intsendv(long sock, byte[][] vec)
Send multiple packets of data over a network.
static voidsetrbb(long sock, ByteBuffer buf)
Set internal receive ByteBuffer.
static voidsetsbb(long sock, ByteBuffer buf)
Set internal send ByteBuffer.
static intshutdown(long thesocket, int how)
Shutdown either reading, writing, or both sides of a socket.
static longtimeoutGet(long sock)
Query socket timeout for the specified socket
static inttimeoutSet(long sock, long t)
Setup socket timeout for the specified socket

Field Detail

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.)

APR_INCOMPLETE_WRITE

public static final int APR_INCOMPLETE_WRITE
like APR_INCOMPLETE_READ, but for write

APR_INET

public static final int APR_INET

APR_INET6

public static final int APR_INET6

APR_IPV4_ADDR_OK

public static final int APR_IPV4_ADDR_OK
no longer allow read or write requests

APR_IPV6_ADDR_OK

public static final int APR_IPV6_ADDR_OK

APR_IPV6_V6ONLY

public static final int APR_IPV6_V6ONLY
Don't accept IPv4 connections on an IPv6 listening socket.

APR_LOCAL

public static final int APR_LOCAL
Enum to tell us if we're interested in remote or local socket apr_interface_e

APR_PROTO_SCTP

public static final int APR_PROTO_SCTP
UDP

APR_PROTO_TCP

public static final int APR_PROTO_TCP

APR_PROTO_UDP

public static final int APR_PROTO_UDP
TCP

APR_REMOTE

public static final int APR_REMOTE

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

APR_SHUTDOWN_READ

public static final int APR_SHUTDOWN_READ
Define what type of socket shutdown should occur. apr_shutdown_how_e enum

APR_SHUTDOWN_READWRITE

public static final int APR_SHUTDOWN_READWRITE
no longer allow write requests

APR_SHUTDOWN_WRITE

public static final int APR_SHUTDOWN_WRITE
no longer allow read request

APR_SO_DEBUG

public static final int APR_SO_DEBUG
Keepalive

APR_SO_DISCONNECTED

public static final int APR_SO_DISCONNECTED
Receive buffer

APR_SO_KEEPALIVE

public static final int APR_SO_KEEPALIVE
Linger

APR_SO_LINGER

public static final int APR_SO_LINGER

APR_SO_NONBLOCK

public static final int APR_SO_NONBLOCK
Debug

APR_SO_RCVBUF

public static final int APR_SO_RCVBUF
Send buffer

APR_SO_REUSEADDR

public static final int APR_SO_REUSEADDR
Non-blocking IO

APR_SO_SNDBUF

public static final int APR_SO_SNDBUF
Reuse addresses

APR_TCP_DEFER_ACCEPT

public static final int APR_TCP_DEFER_ACCEPT
Delay accepting of new connections until data is available.

APR_TCP_NODELAY

public static final int APR_TCP_NODELAY
For SCTP sockets, this is mapped to STCP_NODELAY internally.

APR_TCP_NOPUSH

public static final int APR_TCP_NOPUSH

APR_UNSPEC

public static final int APR_UNSPEC

SOCKET_GET_APRS

public static final int SOCKET_GET_APRS

SOCKET_GET_IMPL

public static final int SOCKET_GET_IMPL

SOCKET_GET_POOL

public static final int SOCKET_GET_POOL

SOCKET_GET_TYPE

public static final int SOCKET_GET_TYPE

SOCK_DGRAM

public static final int SOCK_DGRAM

SOCK_STREAM

public static final int SOCK_STREAM

Method Detail

accept

public static long accept(long sock)
Accept a new connection request

Parameters: sock The socket we are listening on.

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.

acceptfilter

public static int acceptfilter(long sock, String name, 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.

acceptx

public static long acceptx(long sock, long pool)
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.

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.

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.

close

public static int close(long thesocket)
Close a socket.

Parameters: thesocket The socket to close

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.

create

public static long create(int family, int type, int protocol, long cont)
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.

destroy

public static void destroy(long thesocket)
Destroy a pool associated with socket

Parameters: thesocket The destroy

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.

optGet

public static int optGet(long sock, int opt)
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.

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.

pool

public static long pool(long thesocket)
Create a child pool from associated socket pool.

Parameters: thesocket The socket to use

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.

recvb

public static int recvb(long sock, 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

recvbbt

public static int recvbbt(long sock, int offset, int nbytes, long timeout)
Read data from a network with timeout using internally set ByteBuffer

recvbt

public static int recvbt(long sock, 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.

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.

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.

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, 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

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.

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

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.

setrbb

public static void setrbb(long sock, ByteBuffer buf)
Set internal receive ByteBuffer. This function will preset internal Java ByteBuffer for consecutive revcvbb/recvbbt calls.

Parameters: sock The socket to use buf The ByteBuffer

setsbb

public static void setsbb(long sock, ByteBuffer buf)
Set internal send ByteBuffer. This function will preset internal Java ByteBuffer for consecutive sendbb calls.

Parameters: sock The socket to use buf The ByteBuffer

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
 

timeoutGet

public static long timeoutGet(long sock)
Query socket timeout for the specified socket

Parameters: sock The socket to query

Returns: Socket timeout returned from the query.

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
 

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