Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

javax.microedition.io
インタフェース Datagram

すべてのスーパーインタフェース:
DataInput, DataOutput

public interface Datagram
extends DataInput, DataOutput

このクラスはデータグラム・パケットのための抽象的なインタフェースを定義します。 このインタフェースの実装は、DatagramConnection から送信するか、または受信したデータを保持します。

これはインタフェース・クラスであるため、データグラム・パケットの内部構造をここでは定義しません。 しかし、このインタフェースの各実装が、以下のフィールド / 状態変数を提供するでしょう(実際の実装とこれらのフィールドの名前は異なるかもしれません)。

読み出しと書き込み

Datagram インタフェースは、getData および setData メソッドを使用する代わりにデータグラム・バッファの内外のバイナリ・データを簡単に読み書きする手段を提供するためにインタフェース DataInput および DataOutput を継承します。 書き込みによって自動的に length は増加します。そして read/write pointerlength 以下において読み出しを継続することができます。 全ての書き込みもなされる前に reset を呼び出さなければなりません。 読み出しまたは書き込みに setData() を使用するつもりであるなら、0 以外の offset パラメータへの任意の値はサポートされません。

データグラムを書く例:

 datagram = connection.newDatagram(max);
 
 // データグラムに新しいメッセージを書き込む前にリセットします。
 datagram.reset();
 
 // writeUTF は自動的にデータグラムの長さを拡張します。
 datagram.writeUTF("hello world");
 

データグラムから読み出す例(1度の使用のみ):

 datagram = connection.newDatagram(max);
 connection.receive(datagram);
 message = datagram.readUTF();
 

データグラムの再利用

getLength によって返される length は、時々によって異なる意味を持つことがあることに注目すべきです。 送信する時には length は送信バイト数です。 受信する前の length は受信することができる最大バイト数です。 受信した後の length は受信したバイト数です。 データグラムを受信した後に送信または受信するために再利用する時には、setLength(int) を使用して長さの最大値を設定しなおさなければなりません。

 datagram = connection.newDatagram(max);
 
 while (notDone) {
     // ループにおける最後の受信が長さを変更したため、
     // 最大の長さにそれを設定しなおします。
     datagram.setLength(max);
     connection.receive(datagram);
 
     data = datagram.getData();
     bytesReceived = datagram.getLength();
 
     // データグラムの処理....
 }
 

getData を使用せずに読み出しを行うなら、reset() メソッドを使用しなければなりません。

 datagram = connection.newDatagram(max);
 
 while (notDone) {
 
     // ループにおける最後の読み出しが読み出しポインタを変更したため、
     // ポインタをリセットします。
     datagram.reset();
     datagram.setLength(max);
     connection.receive(datagram);
 
     message = datagram.readUTF(message);
 
     // メッセージ処理....
 }
 

データグラムを再度読み出す例:

 connection.receive(datagram);
 message = datagram.readUTF(message);
 len = datagram.getLength();
 datagram.reset();
 datagram.setLength(len);
 copy = datagram.readUTF(message);
 

導入されたバージョン:
CLDC 1.0

メソッドの概要
 String getAddress()
          データグラムのアドレスを返します。
 byte[] getData()
          データグラムのデータ・バッファを返します。
 int getLength()
          データグラムの長さを返します(データグラムの長さとはデータ・バッファ内のデータの長さのことを指します)。
 int getOffset()
          データ・バッファ内のオフセットを返します。
 void reset()
          データの書き込みおよび読み取りのポインタ(read/write pointer)をリセットし、オフセット(offset)およびデータの長さ(length)をゼロにします。
 void setAddress(Datagram source)
          指定したデータグラムのアドレスを新しいデータグラムのアドレスにコピーします。
 void setAddress(String address)
          データグラムのアドレスを設定します。
 void setData(byte[] buffer, int offset, int len)
          データ・バッファ、バッファ内のオフセット、バッファ内のデータ長を設定します。
 void setLength(int len)
          データグラムの長さを設定します。
 
インタフェース java.io.DataInput から継承されたメソッド
readBoolean, readByte, readChar, readDouble, readFloat, readFully, readFully, readInt, readLong, readShort, readUnsignedByte, readUnsignedShort, readUTF, skipBytes
 
インタフェース java.io.DataOutput から継承されたメソッド
write, write, write, writeBoolean, writeByte, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeLong, writeShort, writeUTF
 

メソッドの詳細

getAddress

String getAddress()
データグラムのアドレスを返します。

戻り値:
アドレスを文字列形式で返します。アドレスが設定されていない場合は null を返します。
関連項目:
setAddress(java.lang.String)

getData

byte[] getData()

データグラムのデータ・バッファを返します。

実装によっては、このメソッドは内部バッファかそれのコピーのいずれかを返します。 しかし、ユーザーはこのメソッドで返されたデータを変更することによって内部データ・バッファの内容を変更することができると仮定してはなりません。 そうではなく、setData メソッドを使用することによって内部バッファの内容を変更すべきです。

戻り値:
データ・バッファを指す byte 配列を返します。
関連項目:
setData(byte[], int, int)

getLength

int getLength()
データグラムの長さを返します(データグラムの長さとはデータ・バッファ内のデータの長さのことを指します)。

戻り値:
データグラムの長さを返します。
関連項目:
setLength(int)

getOffset

int getOffset()
データ・バッファ内のオフセットを返します。

戻り値:
データ・バッファ内のオフセットを返します。

setAddress

void setAddress(String address)
                throws IOException

データグラムのアドレスを設定します。

アドレスは“{protocol}:{target}”の形式で指定します。 {protocol} の名前と {target} の記述形式についてはデバイスの実装に依存します。

データグラムのアドレスを設定しない場合、オープンした接続のアドレスを使用します。

パラメータ:
address - 設定するアドレスを渡します。
例外:
IllegalArgumentException - アドレスが無効な場合に throw します。
IOException - 入出力操作で問題が発生した場合に throw します。
関連項目:
getAddress()

setAddress

void setAddress(Datagram source)
指定したデータグラムのアドレスを新しいデータグラムのアドレスにコピーします。

パラメータ:
source - コピーするアドレスを含むデータグラムを渡します。
例外:
IllegalArgumentException - アドレスが無効な場合に throw します。
関連項目:
getAddress()

setLength

void setLength(int len)
データグラムの長さを設定します。 len による指定が負数な場合あるいはバッファを越えている場合には IllegalArgumentException を throw します。

パラメータ:
len - 設定するデータグラムの長さを渡します。
例外:
IllegalArgumentException - 指定された長さが不適切な場合に throw します。
関連項目:
getLength()

setData

void setData(byte[] buffer,
             int offset,
             int len)

データ・バッファ、バッファ内のオフセット、バッファ内のデータ長を設定します。 実装によって、この操作はバッファをコピーするか、または単純に buffer パラメータの値を内部の状態変数 buffer に設定することがあります。 しかし、ユーザーはこの操作で渡したバッファを変更することによって内部データ・バッファの内容を変更することができると仮定してはなりません。

パラメータ:
buffer - 設定するデータ・バッファを渡します。
offset - 設定するデータ・バッファ内のオフセットを渡します。
len - 設定するデータ・バッファ内のデータの長さを渡します。
例外:
IllegalArgumentException - offset あるいは len による指定が不適切な場合に throw します。
関連項目:
getData()

reset

void reset()
データの書き込みおよび読み取りのポインタ(read/write pointer)をリセットし、オフセット(offset)およびデータの長さ(length)をゼロにします。


Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

公式仕様書原文の著作権表記等(※):

Mobile Information Device Profile Specification ("Specification")
Version: 2.0
Status: FCS
Release: November 5, 2002

Copyright 2002 Sun Microsystems, Inc. and Motorola, Inc.
All rights reserved.
※ただしこの API リファレンスは英語仕様を一語一句正確に翻訳したものではなく、一度私が英語の仕様原文を読んだ上で元の意味と構造をなるべく保つように書き起こしたものです。このため一部は完全に異なる説明となっています。また CLDC 1.1 部分は同仕様の範囲外であるため、まったく参考とはしていません。

※仕様書のライセンス上、問題は無いと考えておりますが、万が一問題があるとお考えの関係者の方がいらっしゃいましたらメールにて連絡をいただけると幸いに存じます(第一言語に日本語、第二言語に英語を希望しますが、返信は基本的に日本語で行います)。

この API リファレンスは仕様書の日本語版という位置づけでは作成していませんし、仕様書ほど厳格でもありません。MUST、SHOULD、MAY などの仕様の条件を強調する文を維持していません(反映すらしていない個所もあります)。仮想マシンおよび MIDP の実装のために使用することは避けてください。そのような用途には必ず公式仕様書原文そのものを用いるべきです。
この API リファレンスに記載されている内容は"さかきけい"が Sun Microsystems, Inc や Motorola, Inc、Java Community Process が公開している各種公式資料を元に、独自に調査・編集したものであり、Sun Microsystems, Inc や Motorola, Inc、Java Community Process 等とは一切関係ありません。したがってこの API リファレンスに関する問い合わせを関係各社等に対して行うことを固く禁じます。
また、記載された内容には既知か否かに関らず誤りが含まれる可能性があり、一切保証はありません。本 API リファレンスを使用した結果、不利益が生じたとしても"さかきけい"は一切の責任を負いません。
許可無く公開/非公開および Internet/Intranet/LAN を問わず他サイトに転載すること、複写および複製すること、ローカル・ファイル等に保存することを禁じます。


Copyright© 2001-2002,2005-2009,2011 by KEI SAKAKI.
ALL RIGHTS RESERVED.
無断転載を禁じます。

Unofficial "CLDC 1.0 + MIDP 1.0" API Reference はこちらです。