|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
TCP プロトコルでのネットワークへの接続を定義します。この機能は、パーミッションとして TCP 通信(クライアント/サーバー型もしくはPeer-to-Peer型)が許可されたトラステッドStarアプリでのみ利用することができます。
TCP 通信では、端末に対してドコモ網から接続に必要な情報(IPアドレス、ポート番号等)を取得した後、TCP セッションを確立して通信を行います。
端末⇔コンテンツプロバイダ間で通信する「クライアント/サーバ型接続」、あるいは端末⇔端末間で通信する「Peer-to-Peer型接続」のいずれかの方式で通信を行うことができます。詳細は後述を参照してください。
本インタフェースには、以下の状態が存在します。
openRemotePort() メソッドを実行するとポートオープン状態に遷移します。openRemotePort() メソッドは実行可能です。connect()、connect(String, int))は、ポートオープン状態からのみ実行可能です。listen(String, int) メソッドを実行すると接続待ち状態になります。listen(String, int) メソッドはセッションが確立されるまで処理をブロックします。listen(String, int) メソッドはポートオープン状態からのみ実行可能です。close() メソッドを実行すると TCP 通信不可状態に遷移します。close() メソッドは、任意の状態で実行することが可能です。TCP 通信は「クライアント/サーバ型接続」、もしくは「Peer-to-Peer型接続」のいずれかの方式で通信を行うことができます。 以下にそれぞれの方式についての詳細を述べます。
Connector.open() メソッドで、接続先 URL を以下の形式で指定するとTCP通信:クライアント/サーバ型接続となります。
"socket://<ホスト名>:<ポート番号>"
以下に TCP 通信においてクライアント/サーバ型接続を行う場合のコード例を示します。
SocketConnection sc = (SocketConnection)Connector.open("socket://example.com:12345");
sc.openRemotePort(); // ドコモサーバに対してグローバルIPアドレスとポート番号の払い出し要求を行う。
sc.connect(); // 端末とサーバ間のセッションを確立します。
InputStream in = sc.openInputStream();
OutputStream out = sc.openOutputStream();
// 読み込み、書き込み処理
in.close();
out.close();
sc.close(); // 接続を閉じてリソースを解放します。
Connector.open() メソッドで、接続先 URL を以下の形式で指定するとTCP通信:Peer-to-Peer型接続となります。
"socket://<P-to-P用URL>"
<P-to-P用URL> 部分には通信がPeer-to-Peer型接続であることを示す固定文字列を設定します。
以下に TCP 通信において 端末Aと端末BがサーバCより相互に通信相手に払い出されたIPアドレスとポート番号について通知を受け、 Peer-to-Peer 型接続を行う場合のコード例を示します。(この例ではサーバCとの通信でHTTPコネクションを使用し、通信相手アドレスを交換します。サーバはマッチングサーバ・ゲームサーバであることが想定されます)
※端末A※
// ① グローバルIPアドレスとポート番号をサーバーCに送信する。 //
// ② サーバーCから端末BのグローバルIPアドレスとポート番号取得する。 //
// ③ 端末Bに対してセッションの確立を行う。 //
// ① //
SocketConnection scA = (SocketConnection)Connector.open("socket://<P-to-P用URL>");
scA.openRemotePort(); // グローバルIPアドレスとポート番号を払い出してもらう。
String addressMobileA = scA.getLocalAddress(); // 端末Aに払い出されたIPアドレスを取得
int portMobileA = scA.getLocalPort(); //端末Aに払い出されたポート番号を取得
HttpConnection hcA = (HttpConnection)Connector.open("http://<サーバーCのホスト名>");
//サーバCに対して端末Aに払い出されたIPアドレスとポート番号を送信
// ② //
hcA.connect(…);
//サーバCから、端末Bに払い出されたIPアドレスとポート番号を受信
// ③ //
scA.connect(addressMobileB, portMobileB); // 端末Bに対して Peer-to-Peer 接続要求を行う。
InputStream in = scA.openInputStream();
OutputStream out = scA.openOutputStream();
// 読み込み、書き込み処理
in.close();
out.close();
scA.close(); // 接続を閉じてリソースを解放します。
※端末B※
// ① グローバルIPアドレスとポート番号をサーバーCに送信する。
// ② サーバCから端末AのグローバルIPアドレスとポート番号を取得する。 //
// ③ 端末AのグローバルIPアドレスとポート番号からのセッション確立要求待ち状態に遷移する。 //
// ① //
SocketConnection scB = (SocketConnection)Connector.open("socket://<P-to-P用URL>");
scB.openRemotePort(); // グローバルIPアドレスとポート番号を払い出してもらう。
String addressMobileB = scB.getLocalAddress(); // 端末Bに払い出されたIPアドレスを取得
int portMobileB = scB.getLocalPort(); //端末Bに払い出されたポート番号を取得
HttpConnection hcB = (HttpConnection)Connector.open("http://<サーバーCのホスト名>");
//サーバCに対して端末Bに払い出されたIPアドレスとポート番号を送信
// ② //
hcB.connect(…);
//サーバCから、端末Aに払い出されたIPアドレスとポート番号を受信
// ③ //
scB.listen(addressMobileA, portMobileA); // 端末Aからの接続要求を待つ。
InputStream in = scB.openInputStream();
OutputStream out = scB.openOutputStream();
// 読み込み、書き込み処理
in.close();
out.close();
scB.close(); // 接続を閉じてリソースを解放します。
| メソッドの概要 | |
void |
close()
接続を閉じてリソースを解放します。 |
void |
connect()
クライアント/サーバ型接続にて、接続先に対してセッションを確立します。 |
void |
connect(String host,
int port)
Peer-to-Peer 型接続にて、指定した接続先に対してセッションを確立します。 |
String |
getAddress()
接続先のアドレスを取得します。 |
String |
getLocalAddress()
端末に払い出された IP アドレスを取得します。 |
int |
getLocalPort()
端末に払い出されたポート番号を取得します。 |
int |
getPort()
接続先ポート番号を取得します。 |
void |
listen(String host,
int port)
Peer-to-Peer 型接続にて、指定した接続先からの接続を待ち受けます。 |
java.io.DataInputStream |
openDataInputStream()
データ入力ストリームを取得します。 |
java.io.DataOutputStream |
openDataOutputStream()
データ出力ストリームを取得します。 |
java.io.InputStream |
openInputStream()
入力ストリームを取得します。 |
java.io.OutputStream |
openOutputStream()
出力ストリームを取得します。 |
void |
openRemotePort()
グローバルIPアドレスとポート番号の払い出し要求を行います。 |
| メソッドの詳細 |
public void close()
throws java.io.IOException
ネットワークのリソース、及び送受信バッファ等のリソースは全て破棄されます。
javax.microedition.io.Connection 内の closeConnectionException - ConnectionException - java.io.InterruptedIOException -
java.io.IOException -
public void connect()
throws java.io.IOException
Connector.open() メソッドの引数 name に指定した接続先 URL に対してセッションを確立します。
メソッドを呼び出した場合、Star アプリはサスペンドせずに接続処理を行います。 このメソッドはブロッキングメソッドとして動作します。
本メソッドはクライアント/サーバ型接続時に使用します。 Peer-to-Peer型接続時に本メソッドが呼ばれた場合は例外が発生します。本メソッドはポートオープン状態で実行してください。 その他の状態で実行された場合は例外が発生します。
ConnectionException - IllegalStateException -
ConnectionException - ConnectionException - ConnectionException - ConnectionException - connect() を呼び出し中に、このメソッドを呼び出した場合に発生します。
IllegalStateException -
connect(String, int) を呼び出し中に、このメソッドを呼び出した場合も含みます。
java.io.InterruptedIOException -
java.io.IOException -
public void connect(String host,
int port)
throws java.io.IOException
引数に指定した接続先に対して TCP セッションの確立を行います。 引数の接続先には、ドコモ網から払い出された接続先の IP アドレス、及びポート番号を指定してください。 クライアント/サーバ型接続時に本メソッドが呼ばれた場合は例外が発生します。
メソッドを呼び出した場合、Star アプリはサスペンドせずに接続処理を行います。 このメソッドはブロッキングメソッドとして動作します。
本メソッドはポートオープン状態で実行してください。 その他の状態で実行された場合は例外が発生します。
host - 接続先の IP アドレスを指定します。port - 接続先ポート番号を指定します。
IllegalArgumentException -
IllegalArgumentException -
ConnectionException - IllegalStateException -
ConnectionException - ConnectionException - ConnectionException - ConnectionException - ConnectionException - connect(String, int) を呼び出し中に、このメソッドを呼び出した場合に発生します。
IllegalStateException -
connect() を呼び出し中に、このメソッドを呼び出した場合も含みます。
java.io.InterruptedIOException -
NullPointerException -
java.io.IOException -
public void listen(String host,
int port)
throws java.io.IOException
引数に指定した接続先に対して TCP セッションの確立を行います。 引数の接続先には、ドコモ網から払い出された接続先の IP アドレス、及びポート番号を指定してください。 クライアント/サーバ型接続時に本メソッドが呼ばれた場合は例外が発生します。
メソッドを呼び出した場合、Star アプリはサスペンドせずに接続処理を行います。 このメソッドはブロッキングメソッドとして動作します。
本メソッドはポートオープン状態で実行してください。 その他の状態で実行された場合は例外が発生します。
host - 接続先のIPアドレスを指定します。port - 接続先ポート番号を指定します。
IllegalArgumentException -
IllegalArgumentException -
ConnectionException - IllegalStateException -
ConnectionException - ConnectionException - ConnectionException - ConnectionException - listen(String, int) を呼び出し中に、このメソッドを呼び出した場合に発生します。
IllegalStateException -
java.io.InterruptedIOException -
NullPointerException -
java.io.IOException -
public void openRemotePort()
throws java.io.IOException
払い出されたアドレスはgetLocalAddress()、getLocalPort() メソッドで取得できます。
メソッドを呼び出した場合、Star アプリはサスペンドせずに接続処理を行います。 このメソッドはブロッキングメソッドとして動作します。
本メソッドは初期状態で実行してください。 その他の状態で実行された場合は例外が発生します。
ConnectionException - IllegalStateException -
ConnectionException - ConnectionException - ConnectionException - ConnectionException - ConnectionException - ConnectionException - ConnectionException - ConnectionException - ConnectionException - ConnectionException - openRemotePort() を呼び出し中に、このメソッドを呼び出した場合に発生します。
java.io.InterruptedIOException -
java.io.IOException -
public java.io.InputStream openInputStream()
throws java.io.IOException
本メソッドは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。 また、入力ストリーム、あるいはデータ入力ストリームが既に開かれている状態で 本メソッドを実行した場合には例外が発生します。
javax.microedition.io.InputConnection 内の openInputStreamIllegalStateException -
ConnectionException - java.io.InterruptedIOException -
java.io.IOException -
java.io.IOException -
public java.io.DataInputStream openDataInputStream()
throws java.io.IOException
本メソッドは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。 また、入力ストリーム、あるいはデータ入力ストリームが既に開かれている状態で 本メソッドを実行した場合には例外が発生します。
javax.microedition.io.InputConnection 内の openDataInputStreamIllegalStateException -
ConnectionException - java.io.InterruptedIOException -
java.io.IOException -
java.io.IOException -
public java.io.OutputStream openOutputStream()
throws java.io.IOException
本メソッドは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。 また出力ストリーム、あるいはデータ出力ストリームが既に開かれている状態で 本メソッドを実行した場合には例外が発生します。
javax.microedition.io.OutputConnection 内の openOutputStreamIllegalStateException -
ConnectionException - java.io.InterruptedIOException -
java.io.IOException -
java.io.IOException -
public java.io.DataOutputStream openDataOutputStream()
throws java.io.IOException
本メソッドは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。 また、出力ストリーム、あるいはデータ出力ストリームが既に開かれている状態で 本メソッドを実行した場合には例外が発生します。
javax.microedition.io.OutputConnection 内の openDataOutputStreamIllegalStateException -
ConnectionException - java.io.InterruptedIOException -
java.io.IOException -
java.io.IOException -
public String getAddress()
クライアント/サーバ型接続の場合は接続先ホスト名を返します。 Peer-to-Peer型接続の場合は接続先IPアドレスを返します。
本メソッドは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。
IllegalStateException -
public int getPort()
本メソッドは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。
IllegalStateException -
public String getLocalAddress()
本メソッドは ポートオープン状態、接続待ち状態もしくは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。
IllegalStateException -
public int getLocalPort()
本メソッドは ポートオープン状態、接続待ち状態もしくは TCP 通信可能状態で実行してください。 その他の状態で実行された場合は例外が発生します。
IllegalStateException -
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
NTT DOCOMO,INC.
本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。
Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。
FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。
「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。
その他記載された会社名、製品名などは該当する各社の商標または登録商標です。