com.docomostar.io
クラス IrServerObexConnection

Object
  上位を拡張 com.docomostar.io.IrServerObexConnection
すべての実装されたインタフェース:
ObexConnection, ServerObexConnection, javax.microedition.io.Connection, javax.microedition.io.InputConnection, javax.microedition.io.OutputConnection, javax.microedition.io.StreamConnection

public class IrServerObexConnection
extends Object
implements ServerObexConnection

OBEX サーバとして赤外線通信を行う場合の接続を定義します。

端末によっては、 IrDA 通信に加え IrSimple 片方向通信と IrSimple 双方向通信をサポートします。 IrSimple 通信機能では、クライアントの通信モードに応じてサーバの通信モードが決まります。 接続確立後、getCommMode() を呼び出すことで通信モードを確認することができます。

IrSimple 片方向通信と IrSimple 双方向通信においては、 オペレーションとして PUT と DISCONNECT をサポートしています。

以下にコード例を示します。

   try {
       IrServerObexConnection soc;
       soc = (IrServerObexConnection)Connector.open("obex:/irserver");
       soc.accept(); // IrDA または IrSimple の場合、この時点でデバイスに通電して
                     // 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) {
   }
 

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

フィールドの概要
 
インタフェース com.docomostar.io.ObexConnection から継承されたフィールド
ACCEPTED, BAD_GATEWAY, BAD_REQUEST, COMM_MODE_IRDA, COMM_MODE_IRSIMPLE_INTERACTIVE, COMM_MODE_IRSIMPLE_UNILATERALLY, 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
 
メソッドの概要
 void accept()
          接続要求を待ちます。
 void close()
          CLDC の仕様に従ってこの接続をクローズする処理を実装します。
 int getCommMode() [iアプリオプションAPI]
          接続確立後の通信モードを取得します。
 int getContentLength()
          コンテンツの長さを取得します。
 String getName()
          NAME ヘッダを取得します。
 int getOperation()
          リクエストのオペレーションを取得します。
 long getTime()
          TIME ヘッダを取得します。
 String getType()
          TYPE ヘッダを取得します。
 java.io.DataInputStream openDataInputStream()
          CLDC の仕様に従って DataInputStream オブジェクトを返す処理を実装します。
 java.io.DataOutputStream openDataOutputStream()
          CLDC の仕様に従って DataOutputStream オブジェクトを返す処理を実装します。
 java.io.InputStream openInputStream()
          CLDC の仕様に従って InputStream オブジェクトを返す処理を実装します。
 java.io.OutputStream openOutputStream()
          CLDC の仕様に従って OutputStream オブジェクトを返す処理を実装します。
 void receiveRequest()
           リクエストの受信を完了するのを待ちます。
 void sendResponse(int code)
          レスポンスを送信します。
 void setName(String name)
          NAME ヘッダを設定します。
 void setTime(long time)
          TIME ヘッダを設定します。
 void setType(String type)
          TYPE ヘッダを設定します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

accept

public void accept()
            throws java.io.IOException
接続要求を待ちます。 このメソッドを呼び出すと、接続要求が来るまでブロックします。 接続が確立されたらこのメソッドから戻ります。

定義:
インタフェース ServerObexConnection 内の accept
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
既に接続要求発行中の別スレッドが存在するか、別オブジェクトにより既に通信リソースが使用されている場合に発生します。
ConnectionException -
(SELF_MODE)
端末がセルフモードの場合に発生します。
java.io.InterruptedIOException -
別スレッドからの中断要求発生により、通信が中断された場合に発生します。
IllegalStateException -
音声・テレビ電話通話中に呼び出された場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
赤外線リモコンが通信中である場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
アドホック通信中の場合に発生します。
ConnectionException -
(BUSY_RESOURCE)
バックグラウンドで動作しているネイティブ機能が、 パケット通信中の場合に発生します。 以下の場合にも発生します。
  • ミュージックチャネルダウンローダが起動中の場合
  • ソフトウェア更新のダウンロード通知機能が起動中の場合
  • [Star-1.1 まで] PTT 呼通信中、PTT 設定中の場合
ConnectionException -
(BUSY_RESOURCE)
Bluetooth と赤外線通信の同時使用をサポートしていない端末において、 Bluetooth 通信中の場合に発生します。
ConnectionException -
(TIMEOUT)
ネイティブの OBEX レイヤでタイムアウトが発生した場合に発生します。
ConnectionException -
(USER_ABORT)
ユーザが通信開始を許可しなかった場合や、 ユーザ操作により通信が中断された場合に発生します。
java.io.IOException -
対向機器からDisconnect要求が通知された場合に発生します。
java.io.IOException -
IrDA コネクションが確立できない(できなくなった)場合に発生します。 IrSimple コネクションも含みます。
java.io.IOException -
I/O エラーが発生した場合に発生します。

getOperation

public int getOperation()
リクエストのオペレーションを取得します。 直前に実行した receiveRequest メソッドにおいて受信した リクエストのオペレーションコードを返します。

定義:
インタフェース ServerObexConnection 内の getOperation
戻り値:
リクエストのオペレーションを返します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。

receiveRequest

public void receiveRequest()
                    throws java.io.IOException

リクエストの受信を完了するのを待ちます。 このメソッドを呼び出すと、リクエストが到着するまでブロックして、 リクエストを全て受信し終わったらこのメソッドから戻ります。 このメソッドから正常に戻った場合は、 クライアントに対してレスポンスを送信するために、必ず sendResponse メソッドを呼ばなければなりません。

このメソッドを呼び出すことによって、それより前にこの接続オブジェクトから 取り出した InputStream, DataInputStream, OutputStream, DataOutputStream が無効になります。 次に InputStream, DataInputStream を取り出した時は、 このリクエストで受信したデータを読み出す入力ストリームを返します。 また、次に OutputStream, DataOutputStream を取り出した時は、 このレスポンスで送信するデータを書き込む出力ストリームを返します。

なお、IrSimple 片方向通信は実際にクライアントに対するレスポンスを送信しませんが、 このメソッドを呼び出した後に、必ず sendResponse メソッドを呼ばなければなりません。

定義:
インタフェース ServerObexConnection 内の receiveRequest
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
java.io.InterruptedIOException -
別スレッドからの中断要求発生により、通信が中断された場合に発生します。
ConnectionException -
(TIMEOUT)
ネイティブの OBEX レイヤでタイムアウトが発生した場合に発生します。
ConnectionException -
(USER_ABORT)
ユーザ操作により通信を中断された場合や、ユーザ操作により通信を中断された直後に呼び出された場合 に発生します。
java.io.IOException -
IrDA コネクションが確立できない(できなくなった)場合に発生します。 IrSimple コネクションも含みます。
java.io.IOException -
I/O エラーが発生した場合に発生します。

sendResponse

public void sendResponse(int code)
                  throws java.io.IOException
レスポンスを送信します。 ただし、IrSimple 片方向通信は実際にクライアントに対してレスポンスを送信しませんが、 receiveRequest メソッドを呼び出した後に必ずこのメソッドを呼ばなければなりません。

ミニマムスペックでは、以下のレスポンスコードがサポートされています。

  1. ObexConnection.SUCCESS
  2. ObexConnection.NON_AUTHORITATIVE_INFORMATION
  3. ObexConnection.UNAUTHORIZED
  4. ObexConnection.FORBIDDEN
  5. ObexConnection.NOT_FOUND
  6. ObexConnection.REQUEST_TIME_OUT
  7. ObexConnection.CONFLICT
  8. ObexConnection.NOT_IMPLEMENTED
  9. ObexConnection.BAD_REQUEST
  10. ObexConnection.DATABASE_FULL
  11. ObexConnection.DATABASE_LOCKED

定義:
インタフェース ServerObexConnection 内の sendResponse
パラメータ:
code - レスポンスコードを指定します。
例外:
RuntimeException -
呼び出してはならない状態の時に呼び出された場合に発生します。
ConnectionException -
(ILLEGAL_STATE)
receiveRequest メソッドを呼び出す前に呼び出された場合に発生します。
IllegalArgumentException -
引数 code にサポートしていないレスポンスコードが指定された場合に発生します。
java.i>
  • ObexConnection.NON_AUTHORITATIVE_INFORMATION
  • ObexConnection.UNAUTHORIZED
  • ObexConnection.FORBIDDEN
  • ObexConnection.NOT_FOUND
  • ObexConnection.REQUEST_TIME_OUT
  • ObexConnection.CONFLICT
  • ObexConnection.NOT_IMPLEMENTED
  • ObexConnection.BAD_REQUEST
  • ObexConnection.DATABASE_FULL
  • ObexConnection.DATABASE_LOCKED

    螳夂セゥ:
    繧、繝ウ繧ソ繝輔ぉ繝シ繧ケ