クラスDatagramChannel

すべての実装されたインタフェース:
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
    このクラスの新しいインスタンスを初期化します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    チャネルのソケットをローカル・アドレスにバインドします。
    このチャネルのソケットを接続します。
    このチャネルのソケットの接続を切断します。
    abstract SocketAddress
    このチャネルのソケットがバインドされているソケット・アドレスを返します。
    abstract SocketAddress
    このチャネルのソケットが接続されているリモート・アドレスを返します。
    abstract boolean
    このチャネルのソケットが接続されているかどうかを判断します。
    データグラム・チャネルをオープンします。
    データグラム・チャネルをオープンします。
    abstract int
    このチャネルからデータグラムを読み込みます。
    final long
    read(ByteBuffer[] dsts)
    このチャネルからデータグラムを読み込みます。
    abstract long
    read(ByteBuffer[] dsts, int offset, int length)
    このチャネルからデータグラムを読み込みます。
    abstract SocketAddress
    このチャネルからデータグラムを受信します。
    abstract int
    このチャネルからデータグラムを送信します。
    abstract <T> DatagramChannel
    setOption(SocketOption<T> name, T value)
    ソケット・オプションの値を設定します。
    このチャネルに関連したデータグラム・ソケットを取得します。
    final int
    このチャネルのサポートされている操作を識別する操作セットを返します。
    abstract int
    このチャネルへデータグラムを書き込みます。
    final long
    write(ByteBuffer[] srcs)
    このチャネルへデータグラムを書き込みます。
    abstract long
    write(ByteBuffer[] srcs, int offset, int length)
    このチャネルへデータグラムを書き込みます。

    クラスで宣言されたメソッド AbstractSelectableChannel

    blockingLock, configureBlocking, implCloseChannel, implCloseSelectableChannel, implConfigureBlocking, isBlocking, isRegistered, keyFor, provider, register
    修飾子と型
    メソッド
    説明
    final Object
    configureBlockingおよびregisterメソッドが同期するオブジェクトを取得します。
    configureBlocking(boolean block)
    このチャネルのブロック・モードを調整します。
    protected final void
    現在のチャネルをクローズします。
    protected abstract void
    この選択可能チャネルをクローズします。
    protected abstract void
    implConfigureBlocking(boolean block)
    このチャネルのブロック・モードを調整します。
    final boolean
    このチャネル上の個々の入出力操作が前の入出力操作が完了するまでブロックされるかどうかを判断します。
    final boolean
    現在このチャネルがセレクタに登録されているかどうかを判断します。
    チャネルが指定されたセレクタに登録されていることを示すキーを取得します。
    このチャネルの作成元プロバイダを返します。
    register(Selector sel, int ops, Object att)
    このチャネルを指定されたセレクタに登録し、選択キーを返します。

    クラスで宣言されたメソッド SelectableChannel

    register
    修飾子と型
    メソッド
    説明
    register(Selector sel, int ops)
    このチャネルを指定されたセレクタに登録し、選択キーを返します。

    クラスで宣言されたメソッド AbstractInterruptibleChannel

    begin, close, end, isOpen
    修飾子と型
    メソッド
    説明
    protected final void
    無期限にブロックされる入出力操作の開始をマークします。
    final void
    現在のチャネルをクローズします。
    protected final void
    end(boolean completed)
    無期限にブロックされる入出力操作の終了をマークします。
    final boolean
    現在のチャネルの状態がオープンであるかどうかを判断します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。

    インタフェースで宣言されたメソッド MulticastChannel

    close, join, join
    修飾子と型
    メソッド
    説明
    void
    現在のチャネルをクローズします。
    マルチキャスト・グループに参加してそのグループに送信されるすべてのデータグラムの受信を開始し、メンバー・キーを返します。
    join(InetAddress group, NetworkInterface interf, InetAddress source)
    マルチキャスト・グループに参加して、指定されたソース・アドレスからそのグループに送信されるデータグラムの受信を開始します。

    インタフェースで宣言されたメソッド NetworkChannel

    getOption, supportedOptions
    修飾子と型
    メソッド
    説明
    <T> T
    ソケット・オプションの値を返します。
    このチャネルがサポートするソケット・オプションのセットを返します。
  • コンストラクタの詳細

    • 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メソッドを呼び出すことで、新しいチャネルが作成されます。 チャネルは接続されません。

      APIのノート:
      「Unixドメイン」ソケットはサポートされていません。
      パラメータ:
      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 - その他の入出力エラーが発生した場合
      導入されたバージョン:
      1.7
      関連項目:
    • 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
      関連項目:
    • socket

      public abstract DatagramSocket socket()
      このチャネルに関連したデータグラム・ソケットを取得します。
      戻り値:
      このチャネルに関連したデータグラム・ソケット
    • isConnected

      public abstract boolean isConnected()
      このチャネルのソケットが接続されているかどうかを判断します。
      戻り値:
      このチャネルのソケットがopenで、接続されている場合にかぎりtrue
    • connect

      public abstract DatagramChannel connect(SocketAddress remote) throws IOException
      このチャネルのソケットを接続します。

      チャネルのソケットは、指定されたリモート「ピア」アドレス以外とはデータグラムをやりとりしないように構成されています。 接続後、指定されたアドレス以外のアドレスとデータグラムがやりとりされることはありません。 このメソッドを呼び出す前にreceivedではなかったチャネル「ソケット受信バッファ」のデータグラムは破棄される可能性があります。 チャネル・ソケットは、明示的に切断されるか、閉じられるまで接続されたままになります。

      このメソッドはいつでも呼び出すことができます。 別のスレッドがこのチャネルで読取りまたは書込み操作をすでに開始している場合、このメソッドの呼出しはこのような操作が完了するまでブロックされます。 このチャネルのソケットがバインドされていない場合は、このメソッドはbindメソッドをnullのパラメータで呼び出した場合と同様に、最初にソケットを自動的に割り当てられるアドレスにバインドします。

      パラメータ:
      remote - このチャネルの接続先リモート・アドレス
      戻り値:
      このデータグラム・チャネル
      スロー:
      AlreadyConnectedException - このチャネルがすでに接続されている場合
      ClosedChannelException - このチャネルがクローズしている場合
      AsynchronousCloseException - 接続操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
      ClosedByInterruptException - 接続操作の進行中に別のスレッドが現在のスレッドを中断した場合、チャネルをクローズし、現在のスレッドの中断ステータスを設定します
      UnresolvedAddressException - 指定されたリモート・アドレスが完全に解決されない場合
      UnsupportedAddressTypeException - 指定されたリモート・アドレスのタイプがサポート対象外の場合
      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バッファの現在位置に転送されます。 バッファ内に残っているバイト数がデータグラムの格納に必要なバイト数より少ない場合、収まりきらなかったデータグラムは通知なしで破棄されます。

      このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して読込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。 このチャネルのソケットがバインドされていない場合は、このメソッドはbindメソッドをnullのパラメータで呼び出した場合と同様に、最初にソケットを自動的に割り当てられるアドレスにバインドします。

      パラメータ:
      dst - データグラムの転送先バッファ
      戻り値:
      データグラムの発信元アドレス。このチャネルが非ブロッキング・モードで、データグラムがすぐに使用できなかった場合はnull
      スロー:
      IllegalArgumentException - バッファが読取り専用である場合
      ClosedChannelException - このチャネルがクローズしている場合
      AsynchronousCloseException - 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
      ClosedByInterruptException - 読取り操作の進行中に別のスレッドが現在のスレッドを中断した場合、チャネルをクローズし、現在のスレッドの中断ステータスを設定します
      IOException - その他の入出力エラーが発生した場合
    • send

      public abstract int send(ByteBuffer src, SocketAddress target) throws IOException
      このチャネルからデータグラムを送信します。

      チャネルの動作モードが非ブロック・モードで基準となる出力バッファの容量が十分でない場合や、動作モードがブロック・モードで十分な容量がある場合、指定されたバッファ内に残っているバイトは単一のデータグラムとして指定されたターゲット・アドレスへ転送されます。

      データグラムは、通常のwrite操作を実行した場合と同様に、byteバッファから転送されます。

      このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して書込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。 このチャネルのソケットがバインドされていない場合は、このメソッドはbindメソッドをnullのパラメータで呼び出した場合と同様に、最初にソケットを自動的に割り当てられるアドレスにバインドします。

      パラメータ:
      src - 送信されるデータグラムを含むバッファ
      target - データグラムの送信先アドレス
      戻り値:
      送信バイト数。このメソッドを呼び出したときにソース・バッファ内に残っていたバイト数。このチャネルが非ブロック・モードで動作しており、基準となる出力バッファの容量が不十分なためデータグラムが収まりきらない場合はゼロ
      スロー:
      AlreadyConnectedException - このチャネルがtargetで指定されたものとは異なるアドレスに接続されている場合
      ClosedChannelException - このチャネルがクローズしている場合
      AsynchronousCloseException - 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
      ClosedByInterruptException - 読取り操作の進行中に別のスレッドが現在のスレッドを中断した場合、チャネルをクローズし、現在のスレッドの中断ステータスを設定します
      UnresolvedAddressException - 指定されたリモート・アドレスが完全に解決されない場合
      UnsupportedAddressTypeException - 指定されたリモート・アドレスのタイプがサポート対象外の場合
      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です。

      チャネルのソケットが最初にワイルドカード・アドレスにバインドされ、現在はconnectedの場合、返されるアドレスは、ワイルドカード・アドレスではなく、このチャネルを介して送信されるデータグラムのソース・アドレスとして選択されたローカル・アドレスになります。 disconnect()がコールされると、バインドされたアドレスはワイルドカード・アドレスに戻ります。

      定義:
      getLocalAddress、インタフェースNetworkChannel
      戻り値:
      ソケットがバインドされているSocketAddress。チャネルのソケットがバインドされていない場合はnull
      スロー:
      ClosedChannelException - チャネルがクローズしている場合
      IOException - 入出力エラーが発生した場合