|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.nio.channels.spi.AbstractSelectableChannel java.nio.channels.DatagramChannel
public abstract class DatagramChannel
データグラム型ソケットの選択可能なチャネルです。
データグラムチャネルは、ネットワークデータグラムソケットの完全な抽象化ではありません。ソケットオプションのバインドと操作は、socket
メソッド呼び出しによって取得した関連 DatagramSocket
オブジェクトを介して行う必要があります。任意の既存データグラムソケットのチャネルを作成したり、データグラムチャネルに関連したデータグラムソケットで DatagramSocketImpl
オブジェクトを使用するように指定することはできません。
データグラムチャネルは、このクラスの open
メソッドを呼び出すことによって作成できます。新しく作成されたデータグラムチャネルはオープンですが、接続は確立されていません。send
メソッドと receive
メソッドは、データグラムチャネルを接続しなくても使用できます。セキュリティーチェックのオーバーヘッドを回避する目的で connect
メソッドを呼び出すと、データグラムチャネルが接続され、送受信操作のたびにセキュリティーチェックが行われずに済みます。ソケットアドレスを受け付けない (返さない) read
メソッドと write
メソッドを使用する場合は、データグラムチャネルを接続する必要があります。
一度接続されたデータグラムチャネルは、接続が切断されるかクローズされるまで接続されたままになります。データグラムチャネルが接続されているかどうかは、isConnected
メソッド呼び出しによって判断できます。
データグラムチャネルは、複数の並行スレッドで安全に使用できます。データグラムチャネルは並行読み込みおよび書き込みをサポートします。ただし、読み込みを行うスレッドも書き込みを行うスレッドも特定の時点では常に 1 個以下です。
コンストラクタの概要 | |
---|---|
protected |
DatagramChannel(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。 |
メソッドの概要 | |
---|---|
abstract DatagramChannel |
connect(SocketAddress remote)
このチャネルのソケットを接続します。 |
abstract DatagramChannel |
disconnect()
このチャネルのソケットの接続を切断します。 |
abstract boolean |
isConnected()
このチャネルのソケットが接続されているかどうかを判断します。 |
static DatagramChannel |
open()
データグラムチャネルをオープンします。 |
abstract int |
read(ByteBuffer dst)
このチャネルからデータグラムを読み込みます。 |
long |
read(ByteBuffer[] dsts)
このチャネルからデータグラムを読み込みます。 |
abstract long |
read(ByteBuffer[] dsts,
int offset,
int length)
このチャネルからデータグラムを読み込みます。 |
abstract SocketAddress |
receive(ByteBuffer dst)
このチャネルからデータグラムを受信します。 |
abstract int |
send(ByteBuffer src,
SocketAddress target)
このチャネルからデータグラムを送信します。 |
abstract DatagramSocket |
socket()
このチャネルに関連したデータグラムソケットを取得します。 |
int |
validOps()
このチャネルのサポートされている操作を識別する操作セットを返します。 |
abstract int |
write(ByteBuffer src)
このチャネルへデータグラムを書き込みます。 |
long |
write(ByteBuffer[] srcs)
このチャネルへデータグラムを書き込みます。 |
abstract long |
write(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.Channel から継承されたメソッド |
---|
close, isOpen |
コンストラクタの詳細 |
---|
protected DatagramChannel(SelectorProvider provider)
メソッドの詳細 |
---|
public static DatagramChannel open() throws IOException
新しいチャネルを作成するには、システム全体のデフォルトである SelectorProvider
オブジェクトの openDatagramChannel
メソッドを呼び出します。チャネルは接続されません。
IOException
- 入出力エラーが発生した場合public final int validOps()
データグラムチャネルは読み込みと書き込みをサポートするので、このメソッドは (SelectionKey.OP_READ
| SelectionKey.OP_WRITE
) を返します。
SelectableChannel
内の validOps
public abstract DatagramSocket socket()
返されるオブジェクトは、DatagramSocket
クラスで宣言されていない public メソッドは宣言しません。
public abstract boolean isConnected()
public abstract DatagramChannel connect(SocketAddress remote) throws IOException
チャネルのソケットは、指定されたリモート「ピア」アドレス以外とはデータグラムをやりとりしないように構成されています。接続後、指定されたアドレス以外のアドレスとデータグラムがやりとりされることはありません。データグラムソケットは、接続を明示的に切断するかクローズするまで接続されたままになります。
このメソッドは、DatagramSocket
クラスの connect
メソッドとまったく同じセキュリティーチェックを行います。セキュリティーマネージャーがインストールされている場合は、checkAccept
メソッドが指定されたリモートアドレスからのデータグラムの受信を許可し、checkConnect
メソッドが指定されたリモートアドレスへのデータグラムの送信を許可することを確認します。
このメソッドはいつでも呼び出すことができます。呼び出し時に進行中の読み込み操作または書き込み操作には一切影響を及ぼしません。
remote
- このチャネルの接続先リモートアドレス。
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 接続操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
SecurityException
- セキュリティーマネージャーがインストールされていて、指定されたリモートアドレスへのアクセスが許可されていない場合
IOException
- その他の入出力エラーが発生した場合public abstract DatagramChannel disconnect() throws IOException
チャネルのソケットは、インストールされているセキュリティーマネージャーから許可された場合にかぎり、あらゆるリモートアドレスとデータグラムをやりとりできます。
このメソッドはいつでも呼び出すことができます。呼び出し時に進行中の読み込み操作または書き込み操作には一切影響を及ぼしません。
このチャネルのソケットが接続されていない場合、またはチャネルがクローズしている場合、このメソッドを呼び出しても何の効果もありません。
IOException
- その他の入出力エラーが発生した場合public abstract SocketAddress receive(ByteBuffer dst) throws IOException
データグラムをただちに使用できる場合 (このチャネルがブロックモードで動作していてデータグラム 1 個を使用できる場合) は、データグラムが指定された byte バッファーにコピーされたあと、ソースアドレスが返されます。このチャネルが非ブロックモードで動作していてデータグラムをすぐに使用できない場合は、ただちに null が返されます。
データグラムは、通常の read
操作の場合と同様に、指定された byte バッファーの現在位置に転送されます。バッファー内に残っているバイト数がデータグラムの格納に必要なバイト数より少ない場合、収まりきらなかったデータグラムは通知なしで破棄されます。
このメソッドは、DatagramSocket
クラスの receive
メソッドとまったく同じセキュリティーチェックを行います。ソケットが特定のリモートアドレスに接続されておらず、セキュリティーマネージャーがインストールされている場合、このメソッドは、受信されたデータグラムごとにソースのアドレスとポート番号がセキュリティーマネージャーの checkAccept
メソッドによって許可されているかどうかを確認します。このセキュリティーチェックのオーバーヘッドを回避するには、最初に connect
メソッドを使ってソケットを接続します。
このメソッドはいつでも呼び出すことができます。ただし、ほかのスレッドがこのチャネルに対して読み込み操作を開始している場合、このメソッドの呼び出しは最初の操作が終わるまでブロックされます。
dst
- データグラムの転送先バッファー
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 読み込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
SecurityException
- セキュリティーマネージャーがインストールされていて、
データグラムの送信側がデータグラムの受信を許可していない場合
IOException
- その他の入出力エラーが発生した場合public abstract int send(ByteBuffer src, SocketAddress target) throws IOException
チャネルの動作モードが非ブロックモードで基準となる出力バッファーの容量が十分でない場合や、動作モードがブロックモードで十分な容量がある場合、指定されたバッファー内に残っているバイトは単一のデータグラムとして指定されたターゲットアドレスへ転送されます。
データグラムは、通常の write
操作を実行した場合と同様に、byte バッファーから転送されます。
このメソッドは、DatagramSocket
クラスの send
メソッドとまったく同じセキュリティーチェックを行います。ソケットが特定のリモートアドレスに接続されておらず、セキュリティーマネージャーがインストールされている場合、このメソッドは、送信されたデータグラムごとにソースのアドレスとポート番号がセキュリティーマネージャーの checkConnect
メソッドによって許可されているかどうかを確認します。このセキュリティーチェックのオーバーヘッドを回避するには、最初に connect
メソッドを使ってソケットを接続します。
このメソッドはいつでも呼び出すことができます。ただし、ほかのスレッドがこのチャネルに対して書き込み操作を開始している場合、このメソッドの呼び出しは最初の操作が終わるまでブロックされます。
src
- 送信されるデータグラムを含むバッファーtarget
- データグラムの送信先アドレス
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 読み込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
SecurityException
- セキュリティーマネージャーがインストールされていて、
指定されたアドレスへのデータグラムの送信が許可されていない場合
IOException
- その他の入出力エラーが発生した場合public abstract int read(ByteBuffer dst) throws IOException
このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアからのデータグラムのみを受け付けます。指定されたバッファー内に残っているバイト数よりデータグラムのバイト数のほうが多い場合、収まりきらなかったバイトは通知なく破棄されます。それ以外の場合、このメソッドは ReadableByteChannel
インタフェースの指定どおりに動作します。
ReadableByteChannel
内の read
dst
- バイトの転送先バッファー
NotYetConnectedException
- このチャネルのソケットが接続されていない場合
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 読み込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
IOException
- その他の入出力エラーが発生した場合public abstract long read(ByteBuffer[] dsts, int offset, int length) throws IOException
このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアからのデータグラムのみを受け付けます。指定されたバッファー内に残っているバイト数よりデータグラムのバイト数のほうが多い場合、収まりきらなかったバイトは通知なく破棄されます。それ以外の場合、このメソッドは ScatteringByteChannel
インタフェースの指定どおりに動作します。
ScatteringByteChannel
内の read
dsts
- バイトの転送先バッファーoffset
- 最初のバイトの転送先となるバッファー配列内のオフセット。
dsts.length 以下の負でない値length
- アクセスされる最大バッファー数。
dsts.length - offset 以下の負でない値
NotYetConnectedException
- このチャネルのソケットが接続されていない場合
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 読み込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
IOException
- その他の入出力エラーが発生した場合public final long read(ByteBuffer[] dsts) throws IOException
このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアからのデータグラムのみを受け付けます。指定されたバッファー内に残っているバイト数よりデータグラムのバイト数のほうが多い場合、収まりきらなかったバイトは通知なく破棄されます。それ以外の場合、このメソッドは ScatteringByteChannel
インタフェースの指定どおりに動作します。
ScatteringByteChannel
内の read
dsts
- バイトの転送先バッファー
NotYetConnectedException
- このチャネルのソケットが接続されていない場合
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 読み込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
IOException
- その他の入出力エラーが発生した場合public abstract int write(ByteBuffer src) throws IOException
このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアに直接データグラムを送信します。それ以外の場合は、WritableByteChannel
インタフェースの指定どおりに動作します。
WritableByteChannel
内の write
src
- バイトの取得先バッファー
NotYetConnectedException
- このチャネルのソケットが接続されていない場合
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 書き込み中に別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 書き込み中に別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込み状態が設定された場合
IOException
- その他の入出力エラーが発生した場合public abstract long write(ByteBuffer[] srcs, int offset, int length) throws IOException
このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアに直接データグラムを送信します。それ以外の場合は、GatheringByteChannel
インタフェースの指定どおりに動作します。
GatheringByteChannel
内の write
srcs
- バイトの取得先バッファーoffset
- 最初のバイトの取得先となるバッファー配列内のオフセット。srcs.length 以下の負でない値length
- アクセスされる最大バッファー数。
srcs.length - offset 以下の負でない値
NotYetConnectedException
- このチャネルのソケットが接続されていない場合
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 書き込み中に別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 書き込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
IOException
- その他の入出力エラーが発生した場合public final long write(ByteBuffer[] srcs) throws IOException
このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアに直接データグラムを送信します。それ以外の場合は、GatheringByteChannel
インタフェースの指定どおりに動作します。
GatheringByteChannel
内の write
srcs
- バイトの取得先バッファー
NotYetConnectedException
- このチャネルのソケットが接続されていない場合
ClosedChannelException
- このチャネルがクローズしている場合
AsynchronousCloseException
- 書き込み中に別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException
- 書き込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、
現在のスレッドの割り込み状態が設定された場合
IOException
- その他の入出力エラーが発生した場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。