|
Unofficial "CLDC 1.1 + MIDP 2.0" API Reference. (日本語版) |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface Datagram
このクラスはデータグラム・パケットのための抽象的なインタフェースを定義します。
このインタフェースの実装は、DatagramConnection から送信するか、または受信したデータを保持します。
これはインタフェース・クラスであるため、データグラム・パケットの内部構造をここでは定義しません。 しかし、このインタフェースの各実装が、以下のフィールド / 状態変数を提供するでしょう(実際の実装とこれらのフィールドの名前は異なるかもしれません)。
読み出しと書き込み
Datagram インタフェースは、getData および setData メソッドを使用する代わりにデータグラム・バッファの内外のバイナリ・データを簡単に読み書きする手段を提供するためにインタフェース DataInput および DataOutput を継承します。
書き込みによって自動的に length は増加します。そして read/write pointer は length 以下において読み出しを継続することができます。
全ての書き込みもなされる前に 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);
| メソッドの概要 | |
|---|---|
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 |
| メソッドの詳細 |
|---|
String getAddress()
null を返します。setAddress(java.lang.String)byte[] getData()
データグラムのデータ・バッファを返します。
実装によっては、このメソッドは内部バッファかそれのコピーのいずれかを返します。
しかし、ユーザーはこのメソッドで返されたデータを変更することによって内部データ・バッファの内容を変更することができると仮定してはなりません。
そうではなく、setData メソッドを使用することによって内部バッファの内容を変更すべきです。
byte 配列を返します。setData(byte[], int, int)int getLength()
setLength(int)int getOffset()
void setAddress(String address)
throws IOException
データグラムのアドレスを設定します。
アドレスは“{protocol}:{target}”の形式で指定します。
{protocol} の名前と {target} の記述形式についてはデバイスの実装に依存します。
データグラムのアドレスを設定しない場合、オープンした接続のアドレスを使用します。
address - 設定するアドレスを渡します。
IllegalArgumentException - アドレスが無効な場合に throw します。
IOException - 入出力操作で問題が発生した場合に throw します。getAddress()void setAddress(Datagram source)
source - コピーするアドレスを含むデータグラムを渡します。
IllegalArgumentException - アドレスが無効な場合に throw します。getAddress()void setLength(int len)
len による指定が負数な場合あるいはバッファを越えている場合には IllegalArgumentException を throw します。
len - 設定するデータグラムの長さを渡します。
IllegalArgumentException - 指定された長さが不適切な場合に throw します。getLength()
void setData(byte[] buffer,
int offset,
int len)
データ・バッファ、バッファ内のオフセット、バッファ内のデータ長を設定します。
実装によって、この操作はバッファをコピーするか、または単純に buffer パラメータの値を内部の状態変数 buffer に設定することがあります。
しかし、ユーザーはこの操作で渡したバッファを変更することによって内部データ・バッファの内容を変更することができると仮定してはなりません。
buffer - 設定するデータ・バッファを渡します。offset - 設定するデータ・バッファ内のオフセットを渡します。len - 設定するデータ・バッファ内のデータの長さを渡します。
IllegalArgumentException - offset あるいは len による指定が不適切な場合に throw します。getData()void reset()
|
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 部分は同仕様の範囲外であるため、まったく参考とはしていません。 ※仕様書のライセンス上、問題は無いと考えておりますが、万が一問題があるとお考えの関係者の方がいらっしゃいましたらメールにて連絡をいただけると幸いに存じます(第一言語に日本語、第二言語に英語を希望しますが、返信は基本的に日本語で行います)。 |
