java.nio.channels

Class SocketChannel

Implemented Interfaces:
AutoCloseable, ByteChannel, Channel, Closeable, GatheringByteChannel, InterruptibleChannel, ReadableByteChannel, ScatteringByteChannel, WritableByteChannel

public abstract class SocketChannel
extends AbstractSelectableChannel
implements ByteChannel, ScatteringByteChannel, GatheringByteChannel

Since:
1.4

Constructor Summary

SocketChannel(SelectorProvider provider)
Initializes this socket channel.

Method Summary

abstract boolean
connect(SocketAddress remote)
Connects the channel's socket to the remote address.
abstract boolean
finishConnect()
Finishes the process of connecting a socket channel.
abstract boolean
isConnected()
Tells whether or not the channel's socket is connected.
abstract boolean
isConnectionPending()
Tells whether or not a connection operation is in progress on this channel.
static SocketChannel
open()
Opens a socket channel.
static SocketChannel
open(SocketAddress remote)
Opens a channel and connects it to a remote address.
abstract int
read(ByteBuffer dst)
Reads data from the channel.
long
read(ByteBuffer[] dsts)
Reads data from the channel.
abstract long
read(ByteBuffer[] dsts, int offset, int length)
Reads data from the channel.
abstract Socket
socket()
Retrieves the channel's socket.
int
validOps()
Retrieves the valid operations for this channel.
abstract int
write(ByteBuffer src)
Writes data to the channel.
long
write(ByteBuffer[] dsts)
Writes data to the channel.
abstract long
write(ByteBuffer[] srcs, int offset, int length)
Writes data to the channel.

Methods inherited from class java.nio.channels.spi.AbstractSelectableChannel

blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register

Methods inherited from class java.nio.channels.SelectableChannel

blockingLock, configureBlocking, isBlocking, isRegistered, keyFor, provider, register, register, validOps

Methods inherited from class java.nio.channels.spi.AbstractInterruptibleChannel

begin, close, end, implCloseChannel, isOpen

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

SocketChannel

protected SocketChannel(SelectorProvider provider)
Initializes this socket channel.

Method Details

connect

public abstract boolean connect(SocketAddress remote)
            throws IOException
Connects the channel's socket to the remote address.
Returns:
true if the channel got successfully connected, false if the channel is in non-blocking mode and connection operation is still in progress.
Throws:
AlreadyConnectedException - If this channel is already connected.
ConnectionPendingException - If a non-blocking connection operation is already in progress on this channel.
IOException - If an error occurs
SecurityException - If a security manager has been installed and it does not permit access to the given remote endpoint.
UnresolvedAddressException - If the given remote address is not fully resolved.
UnsupportedAddressTypeException - If the type of the given remote address is not supported.

finishConnect

public abstract boolean finishConnect()
            throws IOException
Finishes the process of connecting a socket channel.
Throws:
IOException - If an error occurs
NoConnectionPendingException - If this channel is not connected and a connection operation has not been initiated.

isConnected

public abstract boolean isConnected()
Tells whether or not the channel's socket is connected.

isConnectionPending

public abstract boolean isConnectionPending()
Tells whether or not a connection operation is in progress on this channel.

open

public static SocketChannel open()
            throws IOException
Opens a socket channel.
Returns:
the new SocketChannel object
Throws:
IOException - If an error occurs

open

public static SocketChannel open(SocketAddress remote)
            throws IOException
Opens a channel and connects it to a remote address.
Returns:
the new SocketChannel object
Throws:
IOException - If an error occurs
SecurityException - If a security manager has been installed and it does not permit access to the given remote endpoint.
UnresolvedAddressException - If the given remote address is not fully resolved.
UnsupportedAddressTypeException - If the type of the given remote address is not supported.

read

public abstract int read(ByteBuffer dst)
            throws IOException
Reads data from the channel.
Specified by:
read in interface ReadableByteChannel
Returns:
the number of bytes read, zero is valid too, -1 if end of stream is reached
Throws:
IOException - If an error occurs
NotYetConnectedException - If this channel is not yet connected.

read

public final long read(ByteBuffer[] dsts)
            throws IOException
Reads data from the channel.
Specified by:
read in interface ScatteringByteChannel
Returns:
the number of bytes read, zero is valid too, -1 if end of stream is reached
Throws:
IOException - If an error occurs
NotYetConnectedException - If this channel is not yet connected.

read

public abstract long read(ByteBuffer[] dsts,
                          int offset,
                          int length)
            throws IOException
Reads data from the channel.
Specified by:
read in interface ScatteringByteChannel
Returns:
the number of bytes read, zero is valid too, -1 if end of stream is reached
Throws:
IOException - If an error occurs
NotYetConnectedException - If this channel is not yet connected.

socket

public abstract Socket socket()
Retrieves the channel's socket.
Returns:
the socket

validOps

public final int validOps()
Retrieves the valid operations for this channel.
Overrides:
validOps in interface SelectableChannel
Returns:
the valid operations

write

public abstract int write(ByteBuffer src)
            throws IOException
Writes data to the channel.
Specified by:
write in interface WritableByteChannel
Returns:
the number of bytes written, zero is valid too
Throws:
IOException - If an error occurs
NotYetConnectedException - If this channel is not yet connected.

write

public final long write(ByteBuffer[] dsts)
            throws IOException
Writes data to the channel.
Specified by:
write in interface GatheringByteChannel
Returns:
the number of bytes written, zero is valid too
Throws:
IOException - If an error occurs
NotYetConnectedException - If this channel is not yet connected.

write

public abstract long write(ByteBuffer[] srcs,
                           int offset,
                           int length)
            throws IOException
Writes data to the channel.
Specified by:
write in interface GatheringByteChannel
Returns:
the number of bytes written, zero is valid too
Throws:
IOException - If an error occurs
NotYetConnectedException - If this channel is not yet connected.

SocketChannel.java -- Copyright (C) 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.