com.nttdocomo.io
インタフェース ServerObexConnection
- すべてのスーパーインタフェース:
- javax.microedition.io.Connection, javax.microedition.io.InputConnection, ObexConnection, javax.microedition.io.OutputConnection, javax.microedition.io.StreamConnection
- public interface ServerObexConnection
- extends ObexConnection
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) {
}
- 導入されたバージョン:
- DoJa-2.0
| インタフェース com.nttdocomo.io.ObexConnection から継承したフィールド |
ACCEPTED, BAD_GATEWAY, BAD_REQUEST, CONFLICT, CONTINUE, CREATED, DATABASE_FULL, DATABASE_LOCKED, DISCONNECT, FORBIDDEN, GATEWAY_TIMEOUT, GET, GONE, HTTP_VERSION_NOT_SUPPORTED, INTERNAL_SERVER_ERROR, LENGTH_REQUIRED, METHOD_NOT_ALLOWED, MOVED_PERMANENTLY, MOVED_TEMPORARILY, MULTIPLE_CHOICES, NO_CONTENT, NON_AUTHORITATIVE_INFORMATION, NOT_ACCEPTABLE, NOT_FOUND, NOT_IMPLEMENTED, NOT_MODIFIED, PARTIAL_CONTENT, PAYMENT_REQUIRED, PRECONDITION_FAILED, PROXY_AUTHENTICATION_REQUIRED, PUT, REQUEST_ENTITY_TOO_LARGE, REQUEST_TIME_OUT, REQUEST_URL_TOO_LARGE, RESET_CONTENT, SEE_OTHER, SERVICE_UNAVAILABLE, SUCCESS, UNAUTHORIZED, UNSUPPORTED_MEDIA_TYPE, USE_PROXY |
| インタフェース javax.microedition.io.InputConnection から継承したメソッド |
openDataInputStream, openInputStream |
| インタフェース javax.microedition.io.Connection から継承したメソッド |
close |
| インタフェース javax.microedition.io.OutputConnection から継承したメソッド |
openDataOutputStream, openOutputStream |
accept
public void accept()
throws java.io.IOException
-
接続要求を待ちます。
このメソッドを呼び出すと、接続要求が来るまでブロックします。
接続が確立されたらこのメソッドから戻ります。
- 例外:
ConnectionException - サポートしている以上の接続を使おうとした場合に発生します(RESOURCE_BUSY)。ConnectionException - ユーザ操作により通信が中断された場合に発生します(USER_ABORT)。InterruptedIOException - 別スレッドからの中断要求やサスペンドにより通信が中断された場合に発生します。java.io.IOException - I/O エラーが発生した場合に発生します。SecurityException - OBEX の使用が許可されていない場合に発生します。IllegalStateException - [DoJa-2.1] 通話中に呼び出された場合に発生します。
receiveRequest
public void receiveRequest()
throws java.io.IOException
-
リクエストの受信が完了するのを待ちます。
このメソッドを呼び出すと、リクエストが到着するまでブロックして、
リクエストを全て受信し終わったらこのメソッドから戻ります。
このメソッドから正常に戻った場合は、必ず sendResponse メソッドを呼んで
レスポンスを送信しなければなりません。
このメソッドを呼び出すことによって、それより前にこの接続オブジェクトから
取り出した InputStream, DataInputStream,
OutputStream, DataOutputStream が無効になります。
次に InputStream, DataInputStream を取り出した時は、
このリクエストで受信したデータを読み出す入力ストリームを返します。
また、次に OutputStream, DataOutputStream を取り出した時は、
このレスポンスで送信するデータを書き込む出力ストリームを返します。
- 例外:
ConnectionException - ユーザ操作により通信が中断された場合に発生します(USER_ABORT)。InterruptedIOException - 別スレッドからの中断要求やサスペンドにより通信が中断された場合に発生します。java.io.IOException - I/O エラーが発生した場合に発生します。
getOperation
public int getOperation()
-
リクエストのオペレーションを取得します。
直前に実行した receiveRequest メソッドにおいて受信した
リクエストのオペレーションコードを返します。
- 戻り値:
- リクエストのオペレーションを返します。
- 例外:
java.lang.RuntimeException - receiveRequest メソッドを呼び出す前に呼び出された場合に発生します。
sendResponse
public void sendResponse(int code)
throws java.io.IOException
-
レスポンスを送信します。
- パラメータ:
code - レスポンスコードを指定します。- 例外:
IllegalArgumentException - 引数 code にサポートしていないレスポンスコードが指定された場合に発生します。java.io.IOException - I/O エラーが発生した場合に発生します。ConnectionException - receiveRequest メソッドを呼び出す前に呼び出された場合に発生します(ILLEGAL_STATE)。ConnectionException - ユーザ操作により通信が中断された場合に発生します(USER_ABORT)。InterruptedIOException - 別スレッドからの中断要求やサスペンドにより通信が中断された場合に発生します。