- すべての実装されたインタフェース:
Closeable,AutoCloseable,ByteChannel,Channel,GatheringByteChannel,InterruptibleChannel,NetworkChannel,ReadableByteChannel,ScatteringByteChannel,WritableByteChannel
ソケット・チャネルは、このクラスのopenメソッドのいずれかを呼び出して作成されます。 no-arg openメソッドは、「インターネット・プロトコル」ソケットのソケット・チャネルを開きます。 open(ProtocolFamily)メソッドは、指定されたプロトコル・ファミリのソケットのソケット・チャネルを開くために使用されます。 任意の既存のソケット用にチャネルを作成することはできません。 新しく作成されたソケット・チャネルはオープンですが、接続は確立されていません。 未接続のチャネルに対して入力操作を呼び出そうとすると、NotYetConnectedExceptionがスローされます。 ソケット・チャネルは、そのconnectメソッドを呼び出すことで接続できます。接続すると、ソケット・チャネルは閉じられるまで接続されたままになります。 ソケット・チャネルが接続されているかどうかは、そのisConnectedメソッドを呼び出して判断できます。
ソケット・チャネルは非ブロック接続をサポートします。ソケット・チャネルの作成とリモート・ソケットへのリンクの確立プロセスはconnectメソッドによって開始され、後でfinishConnectメソッドによって完了します。 接続操作が実行中であるかどうかは、isConnectionPendingメソッドの呼出しによって判断できます。
ソケット・チャネルでは、Channelクラスで指定された非同期クローズ演算と同様の「非同期シャットダウン」がサポートされます。 一方のスレッドがソケットのチャネルに対する読込み操作の途中でブロックされているのに、もう一方のスレッドがソケットの入力側を停止した場合、ブロックされたスレッドの読込み操作は、バイトを一切読み取ることなく終了し、-1を返します。 一方のスレッドがソケットのチャネルに対する書込み操作の途中でブロックされているのに、もう一方のスレッドがソケットの出力側を停止した場合、ブロックされたスレッドはAsynchronousCloseExceptionを受け取ります。
ソケット・オプションはsetOptionメソッドを使用して構成されます。 「インターネット・プロトコル」ソケットのソケット・チャネルでは、次のオプションがサポートされます:
オプション名 説明 SO_SNDBUFソケット送信バッファのサイズ SO_RCVBUFソケット受信バッファのサイズ SO_KEEPALIVE接続をキープアライブにします SO_REUSEADDRアドレスを再利用します SO_LINGER閉じるときにデータが存在する場合は遅延します(ブロック・モードに構成されている場合のみ) TCP_NODELAYNagleアルゴリズムを無効にします
「Unixドメイン」ソケットのソケット・チャネルでは、次のものがサポートされます:
オプション名 説明 SO_SNDBUFソケット送信バッファのサイズ SO_RCVBUFソケット受信バッファのサイズ SO_LINGER閉じるときにデータが存在する場合は遅延します(ブロック・モードに構成されている場合のみ)
追加(実装固有)のオプションをサポートできる場合もあります。
ソケット・チャネルは、複数の並行スレッドで安全に使用できます。 データグラム・チャネルは並行読取りおよび書込みをサポートします。ただし、読取りを行うスレッドも書込みを行うスレッドも特定の時点では常に1個以下です。 connectメソッドとfinishConnectメソッドは相互に同期しており、いずれかのメソッドの呼出し中に読み込みまたは書込み操作を開始しようとすると、この処理はその呼出しが完了するまでブロックされます。
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明abstract SocketChannelbind(SocketAddress local) チャネルのソケットをローカル・アドレスにバインドします。abstract booleanconnect(SocketAddress remote) このチャネルのソケットを接続します。abstract booleanソケット・チャネルの接続処理を完了します。abstract SocketAddressこのチャネルのソケットがバインドされているソケット・アドレスを返します。abstract SocketAddressこのチャネルのソケットが接続されているリモート・アドレスを返します。abstract booleanこのチャネルのネットワーク・ソケットが接続されているかどうかを判断します。abstract booleanこのチャネル上で接続操作が進行中かどうかを判断します。static SocketChannelopen()「インターネット・プロトコル」ソケットのソケット・チャネルを開きます。static SocketChannelopen(ProtocolFamily family) ソケット・チャネルをオープンします。static SocketChannelopen(SocketAddress remote) ソケット・チャネルをオープンし、リモート・アドレスに接続します。abstract intread(ByteBuffer dst) このチャネルのバイト・シーケンスを指定のバッファに読み込みます。final longread(ByteBuffer[] dsts) このチャネルのバイト・シーケンスを指定されたバッファに読み込みます。abstract longread(ByteBuffer[] dsts, int offset, int length) このチャネルのバイト・シーケンスを指定されたバッファのサブシーケンスに読み込みます。abstract <T> SocketChannelsetOption(SocketOption<T> name, T value) ソケット・オプションの値を設定します。abstract SocketChannelチャネルを閉じずに読み込むための接続をシャットダウンします。abstract SocketChannelチャネルを閉じずに書き込むための接続をシャットダウンします。abstract Socketsocket()このチャネルに関連したソケットを取得します。final intvalidOps()このチャネルのサポートされている操作を識別する操作セットを返します。abstract intwrite(ByteBuffer src) このチャネルのバイト・シーケンスを指定のバッファから書き出します。final longwrite(ByteBuffer[] srcs) このチャネルのバイト・シーケンスを指定されたバッファから書き出します。abstract longwrite(ByteBuffer[] srcs, int offset, int length) このチャネルのバイト・シーケンスを指定されたバッファのサブシーケンスから書き出します。クラス java.nio.channels.spi.AbstractSelectableChannelで宣言されたメソッド
blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, registerクラス java.nio.channels.SelectableChannelで宣言されたメソッド
registerクラス java.nio.channels.spi.AbstractInterruptibleChannelで宣言されたメソッド
begin, close, end, isOpenクラス java.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitインタフェース java.nio.channels.NetworkChannelで宣言されたメソッド
getOption, supportedOptions
-
コンストラクタの詳細
-
SocketChannel
protected SocketChannel(SelectorProvider provider) このクラスの新しいインスタンスを初期化します。- パラメータ:
provider- このチャネルの作成元プロバイダ
-
-
メソッドの詳細
-
open
public static SocketChannel open() throws IOException「インターネット・プロトコル」ソケットのソケット・チャネルを開きます。システム全体のデフォルト
SelectorProviderオブジェクトのopenSocketChannelメソッドを呼び出すことで、新しいチャネルが作成されます。- 戻り値:
- 新しいソケット・チャネル
- throws:
IOException- 入出力エラーが発生した場合- 関連項目:
-
- java.net.preferIPv4Stackシステム・プロパティ
-
open
public static SocketChannel open(ProtocolFamily family) throws IOException ソケット・チャネルをオープンします。familyパラメータは、チャネル・ソケットのprotocol familyを指定します。新しいチャネルは、システム全体のデフォルトの
openSocketChannel(ProtocolFamily)メソッドを呼び出すことで作成されます。SelectorProviderobject.- パラメータ:
family- プロトコル・ファミリ- 戻り値:
- 新しいソケット・チャネル
- throws:
UnsupportedOperationException- 指定されたプロトコル・ファミリがサポートされていない場合。 たとえば、パラメータにStandardProtocolFamily.INET6が指定されているが、IPv6がプラットフォームで有効になっていないとします。IOException- 入出力エラーが発生した場合- 導入されたバージョン:
- 15
- 関連項目:
-
- java.net.preferIPv4Stackシステム・プロパティ
-
open
public static SocketChannel open(SocketAddress remote) throws IOException ソケット・チャネルをオープンし、リモート・アドレスに接続します。リモート・アドレスが
InetSocketAddressの場合、このメソッドは、open()メソッドを呼び出し、結果のソケット・チャネルでconnectメソッドを呼び出し、それをremoteに渡してからそのチャネルを返すかのように動作します。リモート・アドレスが
UnixDomainSocketAddressの場合、これはStandardProtocolFamily.UNIXをパラメータとして使用してopen(ProtocolFamily)メソッドを呼び出し、結果のソケット・チャネルでconnectメソッドを呼び出してremoteに渡し、そのチャネルを返すことで機能します。- パラメータ:
remote- 新しいチャネルの接続先リモート・アドレス- 戻り値:
- 新しい、接続されたソケット・チャネル
- throws:
AsynchronousCloseException- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合UnresolvedAddressException- 指定されたリモート・アドレスが完全に解決されていないInetSocketAddressである場合UnsupportedAddressTypeException- 指定されたリモート・アドレスのタイプがサポート対象外の場合SecurityException- セキュリティ・マネージャがインストールされていて、指定されたリモート・エンドポイントへのアクセスが許可されていない場合IOException- その他の入出力エラーが発生した場合- 関連項目:
-
- java.net.preferIPv4Stackシステム・プロパティ
-
validOps
public final int validOps()このチャネルのサポートされている操作を識別する操作セットを返します。ソケット・チャネルでは、接続、読取りおよび書込みがサポートされるため、このメソッドは
(SelectionKey.OP_CONNECT|SelectionKey.OP_READ|SelectionKey.OP_WRITE)を返します。- 定義:
validOps、クラスSelectableChannel- 戻り値:
- 有効な操作セット
-
bind
public abstract SocketChannel bind(SocketAddress local) throws IOException チャネルのソケットをローカル・アドレスにバインドします。このメソッドは、ソケットとローカル・アドレスとの間の関連付けを確立するために使用されます。 「インターネット・プロトコル」ソケットの場合、関連付けが確立されると、ソケットはチャネルがクローズされるまでバインドされたままになります。
localパラメータの値がnullの場合、ソケットは自動的に割り当てられるアドレスにバインドされます。- 定義:
bind、インタフェースNetworkChannel- APIのノート:
- ソケット・チャネルを「Unixドメイン」ソケットにバインドすると、
UnixDomainSocketAddressのファイル・パスに対応するファイルが作成されます。 このファイルはチャネルがクローズされた後も保持され、別のソケットを同じ名前にバインドする前に削除する必要があります。 Unixドメイン・ソケットへのソケット・チャネルがbindを呼び出さずに接続することによって「暗黙的」バウンドである場合、そのソケットはファイルシステム内に対応するソケット・ファイルのない「名前なし」です。 Unixドメイン・ソケットへのソケット・チャネルが、bind(null)を呼び出すことによってバインドされた「自動」である場合は、ソケットの名前も付けられません。 - 実装上のノート:
- 各プラットフォームでは、「Unixドメイン」ソケットの名前に対して実装固有の最大長が適用されます。 この制限は、チャネルがバインドされるときに適用されます。 通常、最大長は100バイト以下です。
- パラメータ:
local- ソケットのバインド先のアドレス、または自動的に割り当てられるソケット・アドレスにソケットをバインドする場合はnull- 戻り値:
- このチャネル
- throws:
ConnectionPendingException- このチャネルですでに非ブロック接続操作が実行中である場合AlreadyBoundException- ソケットがすでにバインドされている場合UnsupportedAddressTypeException- 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException- チャネルがクローズしている場合IOException- その他の入出力エラーが発生した場合SecurityException- セキュリティ・マネージャがインストールされていて、そのcheckListenメソッドが「インターネット・プロトコル」ソケット・アドレス、またはNetPermission("accessUnixDomainSocket")を拒否する場合は「Unixドメイン」ソケット・アドレスの演算を拒否する場合。- 導入されたバージョン:
- 1.7
- 関連項目:
-
setOption
public abstract <T> SocketChannel setOption(SocketOption<T> name, T value) throws IOException インタフェースからコピーされた説明:NetworkChannelソケット・オプションの値を設定します。- 定義:
setOption、インタフェースNetworkChannel- 型パラメータ:
T- ソケット・オプション値のタイプ- パラメータ:
name- ソケット・オプションvalue- ソケット・オプションの値。 一部のソケット・オプションに対しては、nullの値が有効な値である場合があります。- 戻り値:
- このチャネル
- throws:
UnsupportedOperationException- チャネルがソケット・オプションをサポートしていない場合IllegalArgumentException- 値がこのソケット・オプションに対して有効な値でない場合ClosedChannelException- このチャネルがクローズしている場合IOException- 入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
- 関連項目:
-
shutdownInput
public abstract SocketChannel shutdownInput() throws IOExceptionチャネルを閉じずに読み込むための接続をシャットダウンします。読取り用にシャットダウンしたあとに、さらにそのチャネルで読取りを行うと、ストリームの終わりを示す
-1が返されます。 接続の入力側がすでにシャットダウンされている場合は、このメソッドを呼び出しても何の効果もありません。- 戻り値:
- そのチャネル
- throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合IOException- その他の入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
-
shutdownOutput
public abstract SocketChannel shutdownOutput() throws IOExceptionチャネルを閉じずに書き込むための接続をシャットダウンします。書込み用にシャットダウンしたあとに、さらにそのチャネルに書き込もうとすると、
ClosedChannelExceptionがスローされます。 接続の出力側がすでにシャットダウンされている場合は、このメソッドを呼び出しても何の効果もありません。- 戻り値:
- そのチャネル
- throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合IOException- その他の入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
-
socket
public abstract Socket socket()このチャネルに関連したソケットを取得します。- 戻り値:
- このチャネルに関連したソケット
- throws:
UnsupportedOperationException- チャネル・ソケットが「インターネット・プロトコル」ソケットでない場合
-
isConnected
public abstract boolean isConnected()このチャネルのネットワーク・ソケットが接続されているかどうかを判断します。- 戻り値:
- このチャネルのネットワーク・ソケットが
オープンで接続されている場合にかぎりtrue
-
isConnectionPending
public abstract boolean isConnectionPending()このチャネル上で接続操作が進行中かどうかを判断します。- 戻り値:
- このチャネル上で接続操作が開始されていて、
finishConnectメソッドを呼び出すことによってまだ完了していない場合にかぎりtrue
-
connect
public abstract boolean connect(SocketAddress remote) throws IOException このチャネルのソケットを接続します。このチャネルが非ブロック・モードの場合、このメソッドの呼出しにより、非ブロック接続操作が開始されます。 ローカル接続の場合のように即座に接続が確立される場合、このメソッドは
trueを返します。 それ以外の場合はfalseを返し、あとでfinishConnectメソッドを呼び出すことにより、接続操作を完了する必要があります。このチャネルがブロック・モードの場合、このメソッドの呼出しは、接続が確立されるか入出力エラーが発生するまでブロックされます。
「インターネット・プロトコル」ソケットへのチャネルの場合、このメソッドは
Socketクラスとまったく同じセキュリティ・チェックを実行します。 つまり、セキュリティ・マネージャがインストールされている場合、このメソッドは、そのcheckConnectメソッドが指定されたリモート・エンドポイントのアドレスおよびポート番号への接続を許可することを確認します。「Unixドメイン」ソケットへのチャネルの場合、このメソッドはセキュリティ・マネージャの
checkPermissionメソッドを使用してNetPermission("accessUnixDomainSocket")をチェックします。このメソッドはいつでも呼び出すことができます。 このメソッドを呼び出している途中でこのチャネルに対する読み取りまたは書込み操作を呼び出した場合、最初の呼出しが完了するまで次の呼出しはブロックされます。 接続しようとしたが失敗した場合、つまりこのメソッドの呼出しがチェック例外をスローする場合、チャネルはクローズされます。
- パラメータ:
remote- このチャネルの接続先リモート・アドレス- 戻り値:
- 接続が確立された場合は
true、このチャネルが非ブロック・モードで接続操作の実行中である場合はfalse - throws:
AlreadyConnectedException- このチャネルがすでに接続されている場合ConnectionPendingException- このチャネルですでに非ブロック接続操作が実行中である場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合UnresolvedAddressException- 指定されたリモート・アドレスが完全に解決されていないInetSocketAddressである場合UnsupportedAddressTypeException- 指定されたリモート・アドレスのタイプがサポート対象外の場合SecurityException- セキュリティ・マネージャがインストールされていて、指定されたリモート・エンドポイントへのアクセスが許可されていない場合IOException- その他の入出力エラーが発生した場合
-
finishConnect
public abstract boolean finishConnect() throws IOExceptionソケット・チャネルの接続処理を完了します。ソケット・チャネルを非ブロック・モードにし、その
connectメソッドを呼び出すと、非ブロック接続操作が開始されます。 接続が確立されるか、接続に失敗したあと、ソケット・チャネルは接続可能な状態になります。ここで、接続シーケンスを完了するために、このメソッドが呼び出されます。 接続操作に失敗した場合、このメソッドを呼び出すと適切なIOExceptionがスローされます。このチャネルがすでに接続されている場合、このメソッドはブロックされ、ただちに
trueを返します。 このチャネルが非ブロック・モードの場合、接続処理がまだ完了していなければ、このメソッドはfalseを返します。 このチャネルがブロック・モードの場合、接続が完了するか失敗するまでこのメソッドはブロックされます。なお、接続が完了した場合はtrueが返され、接続に失敗した場合はチェック例外がスローされます。このメソッドはいつでも呼び出すことができます。 このメソッドを呼び出している途中でこのチャネルに対する読み取りまたは書込み操作を呼び出した場合、最初の呼出しが完了するまで次の呼出しはブロックされます。 接続しようとしたが失敗した場合、つまりこのメソッドの呼出しがチェック例外をスローする場合、チャネルはクローズされます。
- 戻り値:
- このチャネルのソケットが接続されている場合にかぎり
true - throws:
NoConnectionPendingException- このチャネルが接続されておらず、接続操作も開始されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
getRemoteAddress
public abstract SocketAddress getRemoteAddress() throws IOExceptionこのチャネルのソケットが接続されているリモート・アドレスを返します。チャネル・ソケットがバインドされ、「インターネット・プロトコル」ソケット・アドレスに接続されている場合、戻り値のタイプは
InetSocketAddressです。チャネル・ソケットがバインドされ、「Unixドメイン」ソケット・アドレスに接続されている場合、返されるアドレスは
UnixDomainSocketAddressです。- 戻り値:
- リモート・アドレス。チャネルのソケットが接続されていない場合は
null - throws:
ClosedChannelException- チャネルがクローズしている場合IOException- 入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
-
read
public abstract int read(ByteBuffer dst) throws IOException 次のインタフェースからコピーされた説明:ReadableByteChannelこのチャネルのバイト・シーケンスを指定のバッファに読み込みます。チャネルから最大rバイトを読み取ろうとします。rは、このメソッドを呼び出すときにバッファ内に残っているバイト数、
dst.remaining()になります。長さn (
0<=n<=r)のバイト・シーケンスが読み取られるとします。 このバイト・シーケンスがバッファに転送されるため、シーケンス内の最初のバイトのインデックスはp、最後のバイトのインデックスはp+n-1になります。なお、pは、このメソッドが呼び出されるときのバッファの位置です。 バッファの位置は、終了時にp+nに等しくなります。リミットに変化はありません。読込み操作によってバッファがいっぱいになるとはかぎりません。バイトが一切読み取られない場合もあります。 バッファがいっぱいになるかどうかは、チャネルの本来の性質と状態によって決定します。 たとえば非ブロック・モードのソケットは、ソケットの入力バッファからただちに取得できるバイト以外を読み取ることができません。同様に、ファイル・チャネルは、ファイル内のバイト以外を読み取ることができません。 ただし、チャネルがブロック・モードであり、バッファ内のバイト数が1バイト以上の場合、1バイト以上が読み取られるまでこのメソッドはブロックされることになっています。
このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して読込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。
- 定義:
read、インタフェースReadableByteChannel- パラメータ:
dst- バイトの転送先バッファ- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は
-1 - throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
read
public abstract long read(ByteBuffer[] dsts, int offset, int length) throws IOException 次のインタフェースからコピーされた説明:ScatteringByteChannelこのチャネルのバイト・シーケンスを指定されたバッファのサブシーケンスに読み込みます。このメソッド呼出しは、このチャネルから最大rバイトを読み取ろうとします。rは、指定されたバッファ配列の指定されたサブシーケンスに残っている合計バイト数です。
(このメソッドの呼び出し時点。)dsts[offset].remaining() + dsts[offset+1].remaining() + ... + dsts[offset+length-1].remaining()長さn (
0<=n<=r)のバイト・シーケンスが読み取られるとします。 このシーケンスの最初のdsts[offset].remaining()バイトまではバッファdsts[offset]に転送され、次のdsts[offset+1].remaining()バイトまではバッファdsts[offset+1]に転送されます。バイト・シーケンス全部が指定されたバッファに転送されるまで、この処理が繰り返されます。 各バッファには最大限のバイトが転送されるため、最終更新バッファを除く個々の更新バッファの最終的な位置は、このバッファのリミットと等しくなります。このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して読込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。
- 定義:
read、インタフェースScatteringByteChannel- パラメータ:
dsts- バイトの転送先バッファoffset- 最初のバイトの転送先となるバッファ配列内のオフセット。dsts.length以下の負でない値length- アクセスされる最大バッファ数。dsts.length-offset以下の負でない値- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は
-1 - throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
read
public final long read(ByteBuffer[] dsts) throws IOException 次のインタフェースからコピーされた説明:ScatteringByteChannelこのチャネルのバイト・シーケンスを指定されたバッファに読み込みます。このメソッドを
c.read(dsts)の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。c.read(dsts, 0, dsts.length);
- 定義:
read、インタフェースScatteringByteChannel- パラメータ:
dsts- バイトの転送先バッファ- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は
-1 - throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
write
public abstract int write(ByteBuffer src) throws IOException 次のインタフェースからコピーされた説明:WritableByteChannelこのチャネルのバイト・シーケンスを指定のバッファから書き出します。チャネルに最大rバイトを書き込もうとします。rは、このメソッドを呼び出すときにバッファ内に残っているバイト数、
src.remaining()になります。長さn (
0<=n<=r)のバイト・シーケンスが書き込まれるとします。 このバイト・シーケンスは、バッファのインデックスpから転送されます。pは、このメソッドが呼び出されるときのバッファの位置です。書き込まれる最後のバイトのインデックスはp+n-1になります。 バッファの位置は、終了時にp+nに等しくなります。リミットに変化はありません。特に指定がないかぎり、要求されたrバイトがすべて書き込まれると書込み操作は終了します。 チャネルの種類によっては、その状態に応じて、一部のバイトしか書き込まれない場合や、まったく書込みが行われない場合もあります。 たとえば非ブロック・モードのソケット・チャネルでは、ソケットの出力バッファ内のバイト数が最大書込みバイト数になります。
このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して書込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。
- 定義:
write、インタフェースWritableByteChannel- パラメータ:
src- バイトの取得先バッファ- 戻り値:
- 書き込まれるバイト数。ゼロの場合もある
- throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
write
public abstract long write(ByteBuffer[] srcs, int offset, int length) throws IOException 次のインタフェースからコピーされた説明:GatheringByteChannelこのチャネルのバイト・シーケンスを指定されたバッファのサブシーケンスから書き出します。このチャネルに最大rバイトを書き込もうとします。rは、指定されたバッファ配列の指定されたサブシーケンスに残っている合計バイト数です。
(このメソッドの呼び出し時点。)srcs[offset].remaining() + srcs[offset+1].remaining() + ... + srcs[offset+length-1].remaining()長さn (
0<=n<=r)のバイト・シーケンスが書き込まれるとします。 このシーケンスの最初のsrcs[offset].remaining()バイトまではバッファsrcs[offset]から書き込まれ、次のsrcs[offset+1].remaining()バイトまではバッファsrcs[offset+1]から書き込まれます。バイト・シーケンス全部が書き込まれるまで、この処理が繰り返されます。 各バッファから最大限のバイト数が書き込まれるため、更新された個々のバッファの最終的な位置は、最終更新バッファを除いて、このバッファのリミットと等しくなります。特に指定がないかぎり、要求されたrバイトがすべて書き込まれると書込み操作は終了します。 チャネルの種類によっては、その状態に応じて、一部のバイトしか書き込まれない場合や、まったく書込みが行われない場合もあります。 たとえば非ブロック・モードのソケット・チャネルでは、ソケットの出力バッファ内のバイト数が最大書込みバイト数になります。
このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して書込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。
- 定義:
write、インタフェースGatheringByteChannel- パラメータ:
srcs- バイトの取得先バッファoffset- 最初のバイトの取得先となるバッファ配列内のオフセット。srcs.length以下の負でない値length- アクセスされる最大バッファ数。srcs.length-offset以下の負でない値- 戻り値:
- 書き込まれるバイト数。ゼロの場合もある
- throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
write
public final long write(ByteBuffer[] srcs) throws IOException 次のインタフェースからコピーされた説明:GatheringByteChannelこのチャネルのバイト・シーケンスを指定されたバッファから書き出します。このメソッドを
c.write(srcs)の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。c.write(srcs, 0, srcs.length);
- 定義:
write、インタフェースGatheringByteChannel- パラメータ:
srcs- バイトの取得先バッファ- 戻り値:
- 書き込まれるバイト数。ゼロの場合もある
- throws:
NotYetConnectedException- このチャネルがまだ接続されていない場合ClosedChannelException- このチャネルがクローズしている場合AsynchronousCloseException- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException- その他の入出力エラーが発生した場合
-
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOExceptionこのチャネルのソケットがバインドされているソケット・アドレスを返します。チャネルがInternet Protocolソケット・アドレスに
バインドされている場合は、このメソッドからの戻り値の型はInetSocketAddressです。 セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャのcheckConnectメソッドがローカル・アドレスおよび-1を引数として呼び出され、操作が許可されるかどうかが確認されます。 操作が許可されない場合は、loopbackアドレスを表すSocketAddressと、チャネルのソケットのローカル・ポートが返されます。チャネルがUnixドメイン・ソケット・アドレスにバインドされている場合、ソケット・アドレスは
UnixDomainSocketAddressです。 セキュリティ・マネージャが設定されている場合は、そのcheckPermissionメソッドがNetPermission("accessUnixDomainSocket")でコールされます。 演算が許可されていない場合は、名前のないUnixDomainSocketAddressが返されます。- 定義:
getLocalAddress、インタフェースNetworkChannel- 戻り値:
- ソケットがバインドされている
SocketAddress、ループバック・アドレスを表すSocketAddress、セキュリティ・マネージャによって拒否された場合は空のパス、またはチャネル・ソケットがバインドされていない場合はnull - throws:
ClosedChannelException- チャネルがクローズしている場合IOException- 入出力エラーが発生した場合
-