- すべての実装されたインタフェース:
Closeable
,AutoCloseable
,ByteChannel
,Channel
,GatheringByteChannel
,InterruptibleChannel
,MulticastChannel
,NetworkChannel
,ReadableByteChannel
,ScatteringByteChannel
,WritableByteChannel
public abstract class DatagramChannel extends AbstractSelectableChannel implements ByteChannel, ScatteringByteChannel, GatheringByteChannel, MulticastChannel
データグラム・チャネルは、このクラスのopen
メソッドの1つを呼び出すことによって作成されます。 任意の既存のデータグラム・ソケットのチャネルを作成することはできません。 新しく作成されたデータグラム・チャネルはオープンですが、接続は確立されていません。 send
メソッドとreceive
メソッドを使用するために、データグラム・チャネルを接続する必要はありません。 セキュリティ・チェックのオーバーヘッドを回避する目的でconnect
メソッドを呼び出すと、データグラム・チャネルが接続され、送受信操作のたびにセキュリティ・チェックが行われずに済みます。 ソケット・アドレスを受け付けない(返さない) read
メソッドとwrite
メソッドを使用するためには、データグラム・チャネルを接続する必要があります。
一度接続されたデータグラム・チャネルは、接続が切断されるかクローズされるまで接続されたままになります。 データグラム・チャネルが接続されているかどうかは、isConnected
メソッドの呼出しによって判断できます。
ソケット・オプションはsetOption
メソッドを使用して構成されます。 Internet Protocolソケットへのデータグラム・チャネルでは次のオプションがサポートされます。
追加(実装固有)のオプションをサポートできる場合もあります。
オプション名 説明 SO_SNDBUF
ソケット送信バッファのサイズ SO_RCVBUF
ソケット受信バッファのサイズ SO_REUSEADDR
アドレスを再利用します SO_BROADCAST
ブロードキャスト・データグラムの転送を許可します IP_TOS
IP (Internet Protocol)ヘッダーのサービス・タイプ(ToS)オクテット IP_MULTICAST_IF
IP (Internet Protocol)マルチキャスト・データグラムのネットワーク・インタフェース IP_MULTICAST_TTL
IP (Internet Protocol)マルチキャスト・データグラムの有効期間 IP_MULTICAST_LOOP
IP (Internet Protocol)マルチキャスト・データグラムのループ・バック
データグラム・チャネルは、複数の並行スレッドで安全に使用できます。 データグラム・チャネルは並行読取りおよび書込みをサポートします。ただし、読取りを行うスレッドも書込みを行うスレッドも特定の時点では常に1個以下です。
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
DatagramChannel(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 abstract DatagramChannel
bind(SocketAddress local)
チャネルのソケットをローカル・アドレスにバインドします。abstract DatagramChannel
connect(SocketAddress remote)
このチャネルのソケットを接続します。abstract DatagramChannel
disconnect()
このチャネルのソケットの接続を切断します。abstract SocketAddress
getLocalAddress()
このチャネルのソケットがバインドされているソケット・アドレスを返します。abstract SocketAddress
getRemoteAddress()
このチャネルのソケットが接続されているリモート・アドレスを返します。abstract boolean
isConnected()
このチャネルのソケットが接続されているかどうかを判断します。static DatagramChannel
open()
データグラム・チャネルをオープンします。static DatagramChannel
open(ProtocolFamily family)
データグラム・チャネルをオープンします。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 <T> DatagramChannel
setOption(SocketOption<T> name, T value)
ソケット・オプションの値を設定します。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で宣言されたメソッド
configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, provider, register
クラス java.nio.channels.SelectableChannelで宣言されたメソッド
blockingLock, isBlocking, isRegistered, keyFor, register
クラス java.nio.channels.spi.AbstractInterruptibleChannelで宣言されたメソッド
begin, close, end
クラス java.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インタフェース java.nio.channels.MulticastChannelで宣言されたメソッド
close, join, join
インタフェース java.nio.channels.NetworkChannelで宣言されたメソッド
getOption, supportedOptions
-
コンストラクタの詳細
-
DatagramChannel
protected DatagramChannel(SelectorProvider provider)このクラスの新しいインスタンスを初期化します。- パラメータ:
provider
- このチャネルの作成元プロバイダ
-
-
メソッドの詳細
-
open
public static DatagramChannel open() throws IOExceptionデータグラム・チャネルをオープンします。システム全体のデフォルト
SelectorProvider
オブジェクトのopenDatagramChannel
メソッドを呼び出すことで、新しいチャネルが作成されます。 チャネルは接続されません。チャネルのソケットの
ProtocolFamily
は、プラットフォーム(および場合によっては構成)によって異なるため、未指定です。open
を使用して、データグラム・チャネルを開くときにプロトコル・ファミリを選択できます。Internet Protocolマルチキャストを対象とするデータグラム・チャネルを開くときは、これを使用する必要があります。- 戻り値:
- 新しいデータグラム・チャネル
- 例外:
IOException
- 入出力エラーが発生した場合
-
open
public static DatagramChannel open(ProtocolFamily family) throws IOExceptionデータグラム・チャネルをオープンします。family
パラメータは、ProtocolFamily
を指定するために使用されます。 IPマルチキャストにデータグラム・チャネルを使用する場合、これは、このチャネルが参加するマルチキャスト・グループのアドレス・タイプに対応する必要があります。システム全体のデフォルト
SelectorProvider
オブジェクトのopenDatagramChannel
メソッドを呼び出すことで、新しいチャネルが作成されます。 チャネルは接続されません。- パラメータ:
family
- プロトコル・ファミリ- 戻り値:
- 新しいデータグラム・チャネル
- 例外:
UnsupportedOperationException
- 指定されたプロトコル・ファミリがサポートされていない場合。 たとえば、パラメータにStandardProtocolFamily.INET6
が指定されているが、IPv6がプラットフォームで有効になっていないとします。IOException
- 入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
-
validOps
public final int validOps()このチャネルのサポートされている操作を識別する操作セットを返します。データグラム・チャネルでは、読取りと書込みがサポートされるため、このメソッドは
(
SelectionKey.OP_READ
|
SelectionKey.OP_WRITE
)
を返します。- 定義:
validOps
、クラス:SelectableChannel
- 戻り値:
- 有効な操作セット
-
bind
public abstract DatagramChannel bind(SocketAddress local) throws IOExceptionインタフェースからコピーされた説明:NetworkChannel
チャネルのソケットをローカル・アドレスにバインドします。このメソッドは、ソケットとローカル・アドレスとの間の関連付けを確立するために使用されます。 関連付けが確立されると、ソケットはチャネルが閉じられるまでバインドされたままになります。
local
パラメータの値がnull
の場合、ソケットは自動的に割り当てられるアドレスにバインドされます。- 定義:
bind
、インタフェース:NetworkChannel
- パラメータ:
local
- ソケットのバインド先のアドレス、または自動的に割り当てられるソケット・アドレスにソケットをバインドする場合はnull
- 戻り値:
- このチャネル
- 例外:
AlreadyBoundException
- ソケットがすでにバインドされている場合UnsupportedAddressTypeException
- 指定されたアドレスのタイプがサポート対象外の場合ClosedChannelException
- チャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされていて、checkListen
メソッドが操作を拒否した場合- 導入されたバージョン:
- 1.7
- 関連項目:
NetworkChannel.getLocalAddress()
-
setOption
public abstract <T> DatagramChannel setOption(SocketOption<T> name, T value) throws IOExceptionインタフェースからコピーされた説明:NetworkChannel
ソケット・オプションの値を設定します。- 定義:
setOption
、インタフェース:NetworkChannel
- 型パラメータ:
T
- ソケット・オプション値のタイプ- パラメータ:
name
- ソケット・オプションvalue
- ソケット・オプションの値。 一部のソケット・オプションに対しては、null
の値が有効な値である場合があります。- 戻り値:
- このチャネル
- 例外:
UnsupportedOperationException
- チャネルがソケット・オプションをサポートしていない場合IllegalArgumentException
- 値がこのソケット・オプションに対して有効な値でない場合ClosedChannelException
- このチャネルがクローズしている場合IOException
- 入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
- 関連項目:
StandardSocketOptions
-
socket
public abstract DatagramSocket socket()このチャネルに関連したデータグラム・ソケットを取得します。- 戻り値:
- このチャネルに関連したデータグラム・ソケット
-
isConnected
public abstract boolean isConnected()このチャネルのソケットが接続されているかどうかを判断します。- 戻り値:
- このチャネルのソケットが
open
で、接続されている場合にかぎりtrue
-
connect
public abstract DatagramChannel connect(SocketAddress remote) throws IOExceptionこのチャネルのソケットを接続します。チャネルのソケットは、指定されたリモート「ピア」アドレス以外とはデータグラムをやりとりしないように構成されています。 接続後、指定されたアドレス以外のアドレスとデータグラムがやりとりされることはありません。 このメソッドを呼び出す前にreceivedではなかったチャネル「ソケット受信バッファ」のデータグラムは破棄される可能性があります。 チャネル・ソケットは、明示的に切断されるか、閉じられるまで接続されたままになります。
このメソッドは、
DatagramSocket
クラスのconnect
メソッドとまったく同じセキュリティ・チェックを行います。 セキュリティ・マネージャがインストールされている場合、このメソッドは、checkAccept
メソッドが指定されたリモート・アドレスからのデータグラムの受信を許可し、checkConnect
メソッドが指定されたリモート・アドレスへのデータグラムの送信を許可することを検証します。 接続されると、指定されたリモート・アドレスから受信、またはそのアドレスに送信されたデータグラムに対して、それ以上のセキュリティ・チェックは実行されません。 接続先のデータグラム・チャネルが信頼できないコードと共有されないように注意する必要があります。このメソッドはいつでも呼び出すことができます。 別のスレッドがこのチャネルで読取りまたは書込み操作をすでに開始している場合、このメソッドの呼出しはこのような操作が完了するまでブロックされます。 このチャネルのソケットがバインドされていない場合は、このメソッドは
bind
メソッドをnull
のパラメータで呼び出した場合と同様に、最初にソケットを自動的に割り当てられるアドレスにバインドします。- パラメータ:
remote
- このチャネルの接続先リモート・アドレス- 戻り値:
- このデータグラム・チャネル
- 例外:
AlreadyConnectedException
- このチャネルがすでに接続されている場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 接続操作の進行中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合UnresolvedAddressException
- 指定されたリモート・アドレスが完全に解決されない場合UnsupportedAddressTypeException
- 指定されたリモート・アドレスのタイプがサポート対象外の場合SecurityException
- セキュリティ・マネージャがインストールされており、指定されたリモート・アドレスへのアクセスを許可されていない場合、またはバインドされていない場合、セキュリティ・マネージャcheckListen
メソッドは操作を拒否IOException
- その他の入出力エラーが発生した場合
-
disconnect
public abstract DatagramChannel disconnect() throws IOExceptionこのチャネルのソケットの接続を切断します。チャネルのソケットは、インストールされているセキュリティ・マネージャから許可された場合にかぎり、あらゆるリモート・アドレスとデータグラムをやりとりできます。
このメソッドはいつでも呼び出すことができます。 別のスレッドがこのチャネルで読取りまたは書込み操作をすでに開始している場合、このメソッドの呼出しはこのような操作が完了するまでブロックされます。
このチャネルのソケットが接続されていない場合、またはチャネルがクローズしている場合、このメソッドを呼び出しても何の効果もありません。
- APIのノート:
- このメソッドがIOExceptionをスローする場合、チャネル・ソケットは未指定の状態のままになります。 切断の失敗時にチャネルをクローズすることを強くお薦めします。
- 戻り値:
- このデータグラム・チャネル
- 例外:
IOException
- その他の入出力エラーが発生した場合
-
getRemoteAddress
public abstract SocketAddress getRemoteAddress() throws IOExceptionこのチャネルのソケットが接続されているリモート・アドレスを返します。- 戻り値:
- リモート・アドレス。チャネルのソケットが接続されていない場合は
null
- 例外:
ClosedChannelException
- チャネルがクローズしている場合IOException
- 入出力エラーが発生した場合- 導入されたバージョン:
- 1.7
-
receive
public abstract SocketAddress receive(ByteBuffer dst) throws IOExceptionこのチャネルからデータグラムを受信します。データグラムをただちに使用できる場合(このチャネルがブロック・モードで動作していてデータグラム1個を使用できる場合)は、データグラムが指定されたbyteバッファにコピーされたあと、ソース・アドレスが返されます。 このチャネルが非ブロック・モードで動作していてデータグラムをすぐに使用できない場合は、ただちに
null
が返されます。データグラムは、通常の
read
操作の場合と同様に、指定されたbyteバッファの現在位置に転送されます。 バッファ内に残っているバイト数がデータグラムの格納に必要なバイト数より少ない場合、収まりきらなかったデータグラムは通知なしで破棄されます。このメソッドは、
DatagramSocket
クラスのreceive
メソッドとまったく同じセキュリティ・チェックを行います。 ソケットが特定のリモート・アドレスに接続されておらず、セキュリティ・マネージャがインストールされている場合、このメソッドは、受信されたデータグラムごとにソースのアドレスとポート番号がセキュリティ・マネージャのcheckAccept
メソッドによって許可されていることを検証します。 セキュリティ・マネージャによって許可されないデータグラムは無視されて破棄されます。 このセキュリティ・チェックのオーバーヘッドを回避するには、最初にconnect
メソッドを使ってソケットを接続します。このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して読込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。 このチャネルのソケットがバインドされていない場合は、このメソッドは
bind
メソッドをnull
のパラメータで呼び出した場合と同様に、最初にソケットを自動的に割り当てられるアドレスにバインドします。- パラメータ:
dst
- データグラムの転送先バッファ- 戻り値:
- データグラムのソース・アドレス。または、このチャネルが非ブロック・モードで動作していて、すぐに使用できるデータグラムがない場合は
null
- 例外:
IllegalArgumentException
- バッファが読取り専用である場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合SecurityException
- バインドされていない状態でセキュリティ・マネージャがインストールされており、そのcheckListen
メソッドは操作を拒否IOException
- その他の入出力エラーが発生した場合
-
send
public abstract int send(ByteBuffer src, SocketAddress target) throws IOExceptionこのチャネルからデータグラムを送信します。チャネルの動作モードが非ブロック・モードで基準となる出力バッファの容量が十分でない場合や、動作モードがブロック・モードで十分な容量がある場合、指定されたバッファ内に残っているバイトは単一のデータグラムとして指定されたターゲット・アドレスへ転送されます。
データグラムは、通常の
write
操作を実行した場合と同様に、byteバッファから転送されます。このメソッドは、
DatagramSocket
クラスのsend
メソッドとまったく同じセキュリティ・チェックを行います。 ソケットが特定のリモート・アドレスに接続されておらず、セキュリティ・マネージャがインストールされている場合、このメソッドは、送信されたデータグラムごとにターゲットのアドレスとポート番号がセキュリティ・マネージャのcheckConnect
メソッドによって許可されていることを検証します。 このセキュリティ・チェックのオーバーヘッドを回避するには、最初にconnect
メソッドを使ってソケットを接続します。このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して書込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。 このチャネルのソケットがバインドされていない場合は、このメソッドは
bind
メソッドをnull
のパラメータで呼び出した場合と同様に、最初にソケットを自動的に割り当てられるアドレスにバインドします。- パラメータ:
src
- 送信されるデータグラムを含むバッファtarget
- データグラムの送信先アドレス- 戻り値:
- 送信バイト数。このメソッドを呼び出したときにソース・バッファ内に残っていたバイト数。このチャネルが非ブロック・モードで動作しており、基準となる出力バッファの容量が不十分なためデータグラムが収まりきらない場合はゼロ
- 例外:
AlreadyConnectedException
- このチャネルがtarget
で指定されたものとは異なるアドレスに接続されている場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合UnresolvedAddressException
- 指定されたリモート・アドレスが完全に解決されない場合UnsupportedAddressTypeException
- 指定されたリモート・アドレスのタイプがサポート対象外の場合SecurityException
- セキュリティ・マネージャがインストールされており、指定されたアドレスへのデータグラム送信を許可されていない場合、またはバインドされていない場合、セキュリティ・マネージャcheckListen
メソッドは操作を拒否IOException
- その他の入出力エラーが発生した場合
-
read
public abstract int read(ByteBuffer dst) throws IOExceptionこのチャネルからデータグラムを読み込みます。このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアからのデータグラムのみを受け付けます。 指定されたバッファ内に残っているバイト数よりデータグラムのバイト数のほうが多い場合、収まりきらなかったバイトは通知なく破棄されます。 それ以外の場合は、このメソッドは
ReadableByteChannel
インタフェースの指定どおりに動作します。- 定義:
read
、インタフェース:ReadableByteChannel
- パラメータ:
dst
- バイトの転送先バッファ- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は
-1
- 例外:
NotYetConnectedException
- このチャネルのソケットが接続されていない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
read
public abstract long read(ByteBuffer[] dsts, int offset, int length) throws IOExceptionこのチャネルからデータグラムを読み込みます。このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアからのデータグラムのみを受け付けます。 指定されたバッファ内に残っているバイト数よりデータグラムのバイト数のほうが多い場合、収まりきらなかったバイトは通知なく破棄されます。 それ以外の場合は、このメソッドは
ScatteringByteChannel
インタフェースの指定どおりに動作します。- 定義:
read
、インタフェース:ScatteringByteChannel
- パラメータ:
dsts
- バイトの転送先バッファoffset
- 最初のバイトの転送先となるバッファ配列内のオフセット。dsts.length
以下の負でない値length
- アクセスされる最大バッファ数。dsts.length
-offset
以下の負でない値- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は
-1
- 例外:
NotYetConnectedException
- このチャネルのソケットが接続されていない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
read
public final long read(ByteBuffer[] dsts) throws IOExceptionこのチャネルからデータグラムを読み込みます。このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアからのデータグラムのみを受け付けます。 指定されたバッファ内に残っているバイト数よりデータグラムのバイト数のほうが多い場合、収まりきらなかったバイトは通知なく破棄されます。 それ以外の場合は、このメソッドは
ScatteringByteChannel
インタフェースの指定どおりに動作します。- 定義:
read
、インタフェース:ScatteringByteChannel
- パラメータ:
dsts
- バイトの転送先バッファ- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は
-1
- 例外:
NotYetConnectedException
- このチャネルのソケットが接続されていない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
write
public abstract int write(ByteBuffer src) throws IOExceptionこのチャネルへデータグラムを書き込みます。このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアに直接データグラムを送信します。 それ以外の場合は、
WritableByteChannel
インタフェースの指定どおりに動作します。- 定義:
write
、インタフェース:WritableByteChannel
- パラメータ:
src
- バイトの取得先バッファ- 戻り値:
- 書き込まれるバイト数。ゼロの場合もある
- 例外:
NotYetConnectedException
- このチャネルのソケットが接続されていない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
write
public abstract long write(ByteBuffer[] srcs, int offset, int length) throws IOExceptionこのチャネルへデータグラムを書き込みます。このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアに直接データグラムを送信します。 それ以外の場合は、
GatheringByteChannel
インタフェースの指定どおりに動作します。- 定義:
write
、インタフェース:GatheringByteChannel
- パラメータ:
srcs
- バイトの取得先バッファoffset
- 最初のバイトの取得先となるバッファ配列内のオフセット。srcs.length
以下の負でない値length
- アクセスされる最大バッファ数。srcs.length
-offset
以下の負でない値- 戻り値:
- 送信バイト数。このメソッドを呼び出したときにソース・バッファ内に残っていたバイト数。このチャネルが非ブロック・モードで動作しており、基準となる出力バッファの容量が不十分なためデータグラムが収まりきらない場合はゼロ
- 例外:
NotYetConnectedException
- このチャネルのソケットが接続されていない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
write
public final long write(ByteBuffer[] srcs) throws IOExceptionこのチャネルへデータグラムを書き込みます。このメソッドは、このチャネルのソケットが接続されている場合に限り呼び出すことができ、そのソケットのピアに直接データグラムを送信します。 それ以外の場合は、
GatheringByteChannel
インタフェースの指定どおりに動作します。- 定義:
write
、インタフェース:GatheringByteChannel
- パラメータ:
srcs
- バイトの取得先バッファ- 戻り値:
- 送信バイト数。このメソッドを呼び出したときにソース・バッファ内に残っていたバイト数。このチャネルが非ブロック・モードで動作しており、基準となる出力バッファの容量が不十分なためデータグラムが収まりきらない場合はゼロ
- 例外:
NotYetConnectedException
- このチャネルのソケットが接続されていない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
getLocalAddress
public abstract SocketAddress getLocalAddress() throws IOExceptionこのチャネルのソケットがバインドされているソケット・アドレスを返します。チャネルがInternet Protocolソケット・アドレスに
バインド
されている場合は、このメソッドからの戻り値の型はInetSocketAddress
です。セキュリティ・マネージャが設定されている場合は、セキュリティ・マネージャの
checkConnect
メソッドがローカル・アドレスおよび-1
を引数として呼び出され、操作が許可されるかどうかが確認されます。 この操作が許可されない場合は、ループバック
・アドレスおよびチャネルのソケットのローカル・ポートを表すSocketAddress
が返されます。- 定義:
getLocalAddress
、インタフェース:NetworkChannel
- 戻り値:
- ソケットがバインドされている
SocketAddress
、またはセキュリティ・マネージャによって拒否された場合はループバック・アドレスを表すSocketAddress
、またはチャネルのソケットがバインドされていない場合はnull
- 例外:
ClosedChannelException
- チャネルがクローズしている場合IOException
- 入出力エラーが発生した場合
-