Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

javax.microedition.io
インタフェース ServerSocketConnection

すべてのスーパーインタフェース:
Connection, StreamConnectionNotifier

public interface ServerSocketConnection
extends StreamConnectionNotifier

このインタフェースはサーバー・ソケット・ストリーム接続を定義しています。

サーバー・ソケットはホスト名を省略した Generic Connection フレームワーク文字列を使用することでアクセスします。 例えば"socket://:79"はポート番号 79 でインバウンド(外部から内側への接続を行う)のサーバー・ソケットを意味します。 getLocalAddress() メソッドを呼び出すことでホストの IP アドレスを知ることができます。

StreamConnectionNotifier インタフェースで定義された acceptAndOpen() メソッドを呼び出すことで SocketConnection オブジェクトを返します。 通常の StreamConnection の振る舞いに加えて、SocketConnection は有効な接続の IP エンドポイントアドレスにアクセスして、ソケット・オプションを用いたバッファリングやタイミングの遅れなどの接続に対して、特定のアプリケーションによるネットワークの使用法に関連付けたコントロールをサポートします。

サーバー・ソケット接続へのアクセスはデバイスのセキュリティ・ポリシーによって制限されることがあります。 Connector クラスの open メソッドは、最初にサーバー・ソケット接続にアクセスがあるか否かをチェックしなければならず、 acceptAndOpen() メソッドはそれぞれに新しい SocketConnection オブジェクトを返す前にチェックしなければなりません。

接続に使用する URL 文字列のホストとポートのパラメータの両方を省略することにより、ダイナミックに利用可能なポートを選択するサーバー・ソケットを使用することができます。 例えば、"socket://"はシステムによって割り当てられるダイナミックなポート番号のインバウンドのサーバー・ソケットを意味します。 割り当てられたポート番号は getLocalPort() メソッドによって取得することができます。

Generic Connection フレームワーク接続文字列のための BNF フォーマット

URI は以下で指定する BNF 構文規則に従わなければなりません。 URI がこの構文規則に合致しない場合は IllegalArgumentException を throw します。

<ソケット接続文字列>::= "socket://" | "socket://"<ホストとポート>
<ホストとポート>::= <ホスト> ":" <ポート>
<ホスト>::= インバウンド(内部向け)の接続ではホストは省略します。参照: SocketConnection
<ポート>::= 数字によるポート番号(システムが割り当てるポート番号を使用する場合は省略します)。

使用例

ServerSocketConnection を使用してループバックするサンプル・プログラムを以下に示します。

// ポート番号 1234 をリスニングするサーバー・ソケットを作成
 ServerSocketConnection scn = (ServerSocketConnection)
                          Connector.open("socket://:1234");
 
 // 接続待ち
 SocketConnection sc = (SocketConnection) scn.acceptAndOpen();
 
 // アプリケーション特性によるヒントをソケットに設定
 sc.setSocketOption(DELAY, 0);
 sc.setSocketOption(LINGER, 0);
 sc.setSocketOption(KEEPALIVE, 0);
 sc.setSocketOption(RCVBUF, 128);
 sc.setSocketOption(SNDBUF, 128);
 
 // 接続から InputStream オブジェクトを取得
 DataInputStream is = sc.openDataInputStream();
 
 // 接続から OutputStream オブジェクトを取得
 DataOutputStream os = sc.openDataOutputStream();
 
 // 入力データを読み出す
 String result = is.readUTF();
 
 // 読み出したデータを送信元にエコーバック
 os.writeUTF(result);
 
 // 接続を全てクローズ
 is.close();
 os.close();
 sc.close();
 scn.close();
 ..

導入されたバージョン:
MIDP 2.0

メソッドの概要
 String getLocalAddress()
          ソケットと結び付けられているローカル・アドレスを返します。
 int getLocalPort()
          ソケットと結び付けられているローカル・ポートを返します。
 
インタフェース javax.microedition.io.StreamConnectionNotifier から継承されたメソッド
acceptAndOpen
 
インタフェース javax.microedition.io.Connection から継承されたメソッド
close
 

メソッドの詳細

getLocalAddress

String getLocalAddress()
                       throws IOException

ソケットと結び付けられているローカル・アドレスを返します。

外部のシステムからこのソケット接続の終了まで接続に使用することができるホスト・アドレス(IP アドレス)です。 IP アドレスはダイナミックに割り当てられる可能性があるため、リモート・アプリケーションは IP アドレスの再割り当てに対しての対策を持っている必要があります。

ローカルのホスト名を利用可能であるなら、System クラスの getProperty メソッドでシステム・プロパティ"microedition.hostname"を読み出すことで取得できます。

戻り値:
ソケットが結び付けられているローカル・アドレスを返します。
例外:
IOException - 接続がクローズしている場合に throw します。
関連項目:
SocketConnection

getLocalPort

int getLocalPort()
                 throws IOException

ソケットと結び付けられているローカル・ポートを返します。

戻り値:
このソケットと結び付けられているローカル・ポート番号を返します。
例外:
IOException - 接続がクローズしている場合に throw します。
関連項目:
SocketConnection

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 部分は同仕様の範囲外であるため、まったく参考とはしていません。

※仕様書のライセンス上、問題は無いと考えておりますが、万が一問題があるとお考えの関係者の方がいらっしゃいましたらメールにて連絡をいただけると幸いに存じます(第一言語に日本語、第二言語に英語を希望しますが、返信は基本的に日本語で行います)。

この API リファレンスは仕様書の日本語版という位置づけでは作成していませんし、仕様書ほど厳格でもありません。MUST、SHOULD、MAY などの仕様の条件を強調する文を維持していません(反映すらしていない個所もあります)。仮想マシンおよび MIDP の実装のために使用することは避けてください。そのような用途には必ず公式仕様書原文そのものを用いるべきです。
この API リファレンスに記載されている内容は"さかきけい"が Sun Microsystems, Inc や Motorola, Inc、Java Community Process が公開している各種公式資料を元に、独自に調査・編集したものであり、Sun Microsystems, Inc や Motorola, Inc、Java Community Process 等とは一切関係ありません。したがってこの API リファレンスに関する問い合わせを関係各社等に対して行うことを固く禁じます。
また、記載された内容には既知か否かに関らず誤りが含まれる可能性があり、一切保証はありません。本 API リファレンスを使用した結果、不利益が生じたとしても"さかきけい"は一切の責任を負いません。
許可無く公開/非公開および Internet/Intranet/LAN を問わず他サイトに転載すること、複写および複製すること、ローカル・ファイル等に保存することを禁じます。


Copyright© 2001-2002,2005-2009,2011 by KEI SAKAKI.
ALL RIGHTS RESERVED.
無断転載を禁じます。

Unofficial "CLDC 1.0 + MIDP 1.0" API Reference はこちらです。