|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
OBEX でサーバとして通信を行う場合の接続を定義します。
オペレーションとして PUT と GET と DISCONNECT をサポートしています。
一回の接続で複数回 receiveRequest メソッドを呼び出すことが可能で、
連続して複数のリクエストを受信することができます。
PUT オペレーションのリクエストの BODY ヘッダの内容は
InputStream または DataInputStream から読み出すことができます。
GET オペレーションのリクエストの場合、
InputStream または DataInputStream は常に空のストリームとなります。
ObexConnection インタフェースで定義されている getContentLength メソッドは
リクエストの BODY ヘッダ内のコンテンツの長さを返します。
以下にコード例を示します。
また、OutputStream または DataOutputStream に出力したデータが
GET オペレーションに対するレスポンスの BODY ヘッダの内容としてクライアントに送信されます。
PUT オペレーションに対するレスポンスの場合、OutputStream または DataOutputStream に出力したデータは無視されます。
DISCONNECT オペレーションのリクエストを受信したら接続を閉じなければなりません。
try {
ServerObexConnection soc;
soc = (ServerObexConnection)Connector.open("obex:/irserver");
soc.accept(); // IrDA の場合、この時点でデバイスに通電して
// CONNECT オペレーションの待ち状態に入ります。
while (true) { // 複数のオペレーションを行う場合のループ
soc.receiveRequest(); // このメソッドから戻った時点で
// リクエストが到着しています。
int operation = soc.getOperation();
if (operation == ObexConnection.PUT) {
String name = soc.getName();
InputStream in = soc.openInputStream();
// 読み出し処理
in.close();
soc.sendResponse(ObexConnection.SUCCESS);
} else if (operation == ObexConnection.GET) {
String name = soc.getName();
OutputStream out = soc.openOutputStream();
// 書き込み処理
out.close();
soc.sendResponse(ObexConnection.SUCCESS);
} else if (operation == ObexConnection.DISCONNECT) {
break;
}
}
soc.close();
} catch (IOException e) {
}
フィールドの概要 |
メソッドの概要 | |
void |
accept()
接続要求を待ちます。 |
int |
getOperation()
リクエストのオペレーションを取得します。 |
void |
receiveRequest()
リクエストの受信を完了するのを待ちます。 |
void |
sendResponse(int code)
レスポンスを送信します。 |
インタフェース com.nttdocomo.io.ObexConnection から継承したメソッド |
getContentLength, getName, getTime, getType, setName, setTime, setType |
インタフェース javax.microedition.io.InputConnection から継承したメソッド |
openDataInputStream, openInputStream |
インタフェース javax.microedition.io.Connection から継承したメソッド |
close |
インタフェース javax.microedition.io.OutputConnection から継承したメソッド |
openDataOutputStream, openOutputStream |
メソッドの詳細 |
public void accept() throws java.io.IOException
IllegalStateException
- [DoJa-2.1] 通話中に呼び出された場合に発生します。
ConnectionException
- [DoJa-2.0] サポートしている以上の接続を使おうとした場合に発生します(RESOURCE_BUSY)。
ConnectionException
- [DoJa-3.0] 既に接続要求発行中の別スレッドが存在するか、別オブジェクトにより既に通信リソースが使用されている場合に発生します(RESOURCE_BUSY)。
ConnectionException
-
[DoJa-3.0] 赤外線リモコンが通信中である場合に発生します
(RESOURCE_BUSY)。
ConnectionException
- 端末がセルフモードの場合に発生します(SELF_MODE)。
SecurityException
- OBEX の使用が許可されていない場合に発生します。
java.io.InterruptedIOException
- [DoJa-2.0] 別スレッドからの中断要求やサスペンド
により通信が中断された場合に発生します。
java.io.InterruptedIOException
- [DoJa-3.0] 別スレッドからの中断要求やサスペンド、
待ち受けアプリケーションでの非活性化状態への遷移により通信が中断された場合に発生します。
java.io.InterruptedIOException
- [DoJa-3.5]
別スレッドからの中断要求発生、動画再生の開始、
サスペンド状態や待ち受けアプリケーションでの非活性化状態への遷移により、
通信が中断された場合に発生します。
ConnectionException
- ネイティブの OBEX
レイヤでタイムアウトが発生した場合に発生します(TIMEOUT)。
ConnectionException
- ユーザが通信開始を許可しなかった場合や、
ユーザ操作により通信が中断された場合に発生します(USER_ABORT)。
java.io.IOException
- I/O エラーが発生した場合に発生します。
public void receiveRequest() throws java.io.IOException
このメソッドを呼び出すことによって、それより前にこの接続オブジェクトから 取り出した InputStream, DataInputStream, OutputStream, DataOutputStream が無効になります。 次に InputStream, DataInputStream を取り出した時は、 このリクエストで受信したデータを読み出す入力ストリームを返します。 また、次に OutputStream, DataOutputStream を取り出した時は、 このレスポンスで送信するデータを書き込む出力ストリームを返します。
IllegalStateException
- 通話中に呼び出された場合に発生します。
SecurityException
- OBEX の使用が許可されていない場合に発生します。
java.io.InterruptedIOException
- [DoJa-2.0] 別スレッドからの中断要求やサスペンド
により通信が中断された場合に発生します。
java.io.InterruptedIOException
- [DoJa-3.0] 別スレッドからの中断要求やサスペンド、
待ち受けアプリケーションでの非活性化状態への遷移により通信が中断された場合に発生します。
java.io.InterruptedIOException
- [DoJa-3.5]
別スレッドからの中断要求発生、動画再生の開始、
サスペンド状態や待ち受けアプリケーションでの非活性化状態への遷移により、
通信が中断された場合に発生します。
ConnectionException
- ネイティブの OBEX
レイヤでタイムアウトが発生した場合に発生します(TIMEOUT)。
ConnectionException
- ユーザ操作により通信が中断された場合に発生します(USER_ABORT)。
java.io.IOException
- I/O エラーが発生した場合に発生します。
public int getOperation()
RuntimeException
- 呼び出してはならない状態の時に呼び出された場合に発生します。
public void sendResponse(int code) throws java.io.IOException
code
- レスポンスコードを指定します。
ConnectionException
- receiveRequest メソッドを呼び出す前に呼び出された場合に発生します(ILLEGAL_STATE)。
IllegalStateException
- 通話中に呼び出された場合に発生します。
IllegalArgumentException
- 引数 code にサポートしていないレスポンスコードが指定された場合に発生します。
SecurityException
- OBEX の使用が許可されていない場合に発生します。
java.io.InterruptedIOException
- [DoJa-2.0] 別スレッドからの中断要求やサスペンド
により通信が中断された場合に発生します。
java.io.InterruptedIOException
- [DoJa-3.0] 別スレッドからの中断要求やサスペンド、
待ち受けアプリケーションでの非活性化状態への遷移により通信が中断された場合に発生します。
java.io.InterruptedIOException
- [DoJa-3.5]
別スレッドからの中断要求発生、動画再生の開始、
サスペンド状態や待ち受けアプリケーションでの非活性化状態への遷移により、
通信が中断された場合に発生します。
ConnectionException
- ネイティブの OBEX
レイヤでタイムアウトが発生した場合に発生します(TIMEOUT)。
ConnectionException
- ユーザ操作により通信が中断された場合に発生します(USER_ABORT)。
java.io.IOException
- I/O エラーが発生した場合に発生します。
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
NTT DoCoMo,Inc.
本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。
Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。
「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。