public class Socket extends Object
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
Socket() |
Modifier and Type | Method and Description |
---|---|
static long |
accept(long sock)
Accept a new connection request
|
static int |
acceptfilter(long sock,
String name,
String args)
Set an OS level accept filter.
|
static long |
acceptx(long sock,
long pool)
Accept a new connection request
|
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 Object |
dataGet(long sock,
String key)
Return the data associated with the current socket
|
static int |
dataSet(long sock,
String key,
Object data)
Set the data associated with the current 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,
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,
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,
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 |
sendib(long sock,
ByteBuffer buf,
int offset,
int len)
Send data over a network without retry
This functions acts like a blocking write by default.
|
static int |
sendibb(long sock,
int offset,
int len)
Send data over a network using internally set ByteBuffer
without internal retry.
|
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,
ByteBuffer buf)
Set internal receive ByteBuffer.
|
static void |
setsbb(long sock,
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
|
public static final int SOCK_STREAM
public static final int SOCK_DGRAM
public static final int APR_SO_LINGER
public static final int APR_SO_KEEPALIVE
public static final int APR_SO_DEBUG
public static final int APR_SO_NONBLOCK
public static final int APR_SO_REUSEADDR
public static final int APR_SO_SNDBUF
public static final int APR_SO_RCVBUF
public static final int APR_SO_DISCONNECTED
public static final int APR_TCP_NODELAY
public static final int APR_TCP_NOPUSH
public static final int APR_RESET_NODELAY
public static final int APR_INCOMPLETE_READ
public static final int APR_INCOMPLETE_WRITE
public static final int APR_IPV6_V6ONLY
public static final int APR_TCP_DEFER_ACCEPT
public static final int APR_SHUTDOWN_READ
public static final int APR_SHUTDOWN_WRITE
public static final int APR_SHUTDOWN_READWRITE
public static final int APR_IPV4_ADDR_OK
public static final int APR_IPV6_ADDR_OK
public static final int APR_UNSPEC
public static final int APR_INET
public static final int APR_INET6
public static final int APR_PROTO_TCP
public static final int APR_PROTO_UDP
public static final int APR_PROTO_SCTP
public static final int APR_LOCAL
public static final int APR_REMOTE
public static final int SOCKET_GET_POOL
public static final int SOCKET_GET_IMPL
public static final int SOCKET_GET_APRS
public static final int SOCKET_GET_TYPE
public static long create(int family, int type, int protocol, long cont) throws Exception
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 useException
- Error creating socketpublic static int shutdown(long thesocket, int how)
thesocket
- The socket to closehow
- 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
public static int close(long thesocket)
thesocket
- The socket to closepublic static void destroy(long thesocket)
thesocket
- The destroypublic static int bind(long sock, long sa)
sock
- The socket to bindsa
- The socket address to bind to
This may be where we will find out if there is any other process
using the selected port.public static int listen(long sock, int backlog)
sock
- The socket to listen onbacklog
- 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.public static long acceptx(long sock, long pool) throws Exception
sock
- The socket we are listening on.pool
- The pool for the new socket.Exception
- Socket accept errorpublic static long accept(long sock) throws Exception
sock
- The socket we are listening on.Exception
- Socket accept errorpublic static int acceptfilter(long sock, String name, String args)
sock
- The socket to put the accept filter on.name
- The accept filterargs
- Any extra args to the accept filter. Passing NULL here removes
the accept filter.public static boolean atmark(long sock)
sock
- The socket to querytrue
if socket is at the OOB/urgent mark,
otherwise false
.public static int connect(long sock, long sa)
sock
- The socket we wish to use for our side of the connectionsa
- The address of the machine we wish to connect to.public static int send(long sock, byte[] buf, int offset, int len)
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.
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.public static int sendb(long sock, ByteBuffer buf, int offset, int len)
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.
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.lengthlen
- The maximum number of buffers to be accessed; must be non-negative
and no larger than buf.length - offsetpublic static int sendib(long sock, ByteBuffer buf, int offset, int len)
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.
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.lengthlen
- The maximum number of buffers to be accessed; must be non-negative
and no larger than buf.length - offsetpublic static int sendbb(long sock, int offset, int len)
sock
- The socket to send the data over.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.lengthlen
- The maximum number of buffers to be accessed; must be non-negative
and no larger than buf.length - offsetpublic static int sendibb(long sock, int offset, int len)
sock
- The socket to send the data over.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.lengthlen
- The maximum number of buffers to be accessed; must be non-negative
and no larger than buf.length - offsetpublic static int sendv(long sock, byte[][] vec)
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.
sock
- The socket to send the data over.vec
- The array from which to get the data to send.public static int sendto(long sock, long where, int flags, byte[] buf, int offset, int len)
sock
- The socket to send fromwhere
- The apr_sockaddr_t describing where to send the dataflags
- The flags to usebuf
- The data to sendoffset
- Offset in the byte buffer.len
- The length of the data to sendpublic static int recv(long sock, byte[] buf, int offset, int nbytes)
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.
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.public static int recvt(long sock, byte[] buf, int offset, int nbytes, long 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.
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.public static int recvb(long sock, ByteBuffer buf, int offset, int nbytes)
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.
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.Status.EAGAIN
and EOF will return Status.APR_EOF
.public static int recvbb(long sock, int offset, int nbytes)
sock
- The socket to read the data from.offset
- Offset in the byte buffer.nbytes
- The number of bytes to read (-1) for full array.Status.EAGAIN
not zero.public static int recvbt(long sock, ByteBuffer buf, int offset, int nbytes, long 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.
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.public static int recvbbt(long sock, int offset, int nbytes, long timeout)
sock
- The socket to read the data from.offset
- Offset in the byte buffer.nbytes
- The number of bytes to read (-1) for full array.timeout
- The socket timeout in microseconds.public static int recvfrom(long from, long sock, int flags, byte[] buf, int offset, int nbytes)
from
- The apr_sockaddr_t to fill in the recipient infosock
- The socket to useflags
- The flags to usebuf
- The buffer to useoffset
- Offset in the byte buffer.nbytes
- The number of bytes to read (-1) for full array.public static int optSet(long sock, int opt, int on)
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.public static int optGet(long sock, int opt) throws Exception
sock
- The socket to queryopt
- 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)
Exception
- An error occurredpublic static int timeoutSet(long sock, long t)
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 elapses with no data read or written t == 0 -- read and write calls never block t < 0 -- read and write calls block
public static long timeoutGet(long sock) throws Exception
sock
- The socket to queryException
- An error occurredpublic static long sendfile(long sock, long file, byte[][] headers, byte[][] trailers, long offset, long len, int flags)
sock
- The socket to which we're writingfile
- The open file from which to readheaders
- Array containing the headers to sendtrailers
- Array containing the trailers to sendoffset
- Offset into the file where we should begin writinglen
- Number of bytes to send from the fileflags
- APR flags that are mapped to OS specific flagspublic static long sendfilen(long sock, long file, long offset, long len, int flags)
sock
- The socket to which we're writingfile
- The open file from which to readoffset
- Offset into the file where we should begin writinglen
- Number of bytes to send from the fileflags
- APR flags that are mapped to OS specific flagspublic static long pool(long thesocket) throws Exception
thesocket
- The socket to useException
- An error occurredpublic static void setsbb(long sock, ByteBuffer buf)
sock
- The socket to usebuf
- The ByteBufferpublic static void setrbb(long sock, ByteBuffer buf)
sock
- The socket to usebuf
- The ByteBufferpublic static int dataSet(long sock, String key, Object data)
sock
- The currently open socket.data
- The user data to associate with the socket.key
- The key to associate with the data.Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.