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

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

すべてのスーパーインタフェース:
Connection, InputConnection, OutputConnection, StreamConnection
既知のサブインタフェースの一覧:
SecureConnection

public interface SocketConnection
extends StreamConnection

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

ソケットはホストとポート番号を明示する Generic Connection フレームワーク文字列を使用して取得します。 ホストは完全に適切なホスト名か IPv4 アドレスで記述します。 例えば、"socket://host.com:79"host.com システム上のポート番号 79 をターゲットとするソケットを意味します。

RFC1900 は、IP アドレスの再割り当ての際に最もよい結果を得るために IP アドレスよりもホスト名の使用を推奨することに注意してください。

ストリームのクローズ

全ての StreamConnection は、Connection オブジェクトによる接続に関連した入出力を扱うために InputStreamOutputStream を提供します。 これらのインタフェースは、それぞれが close() メソッドを呼び出してクローズします。 ソケット接続における双方向通信では入力あるいは出力ストリームを閉じると、その接続シャットダウンを行いますが、他方の接続には影響しません。 例えば、InputStream オブジェクトをクローズしたとしても OutputStream オブジェクトを使用してデータを送信しつづけることは許容されます。

入力あるいは出力ストリームを一度クローズすると、再度 Connector クラスの open メソッドで接続を確立しなければ送受信を再開することはできません。 閉じたストリームを再開させようと試みると IOException を throw します。

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

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

<ソケット接続文字列>::= "socket://"<ホストとポート>
<ホストとポート>::= <ホスト> ":" <ポート>
<ホスト>::= ホスト名またはIPアドレス(インバウンド(内部向け)の接続ではホストは省略します - 参照: ServerSocketConnection)。
<ポート>::= 数字によるポート番号

使用例

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

 SocketConnection sc = (SocketConnection)
                       Connector.open("socket://host.com:79");
 sc.setSocketOption(SocketConnection.LINGER, 5);
 
 InputStream is  = sc.openInputStream();
 OutputStream os = sc.openOutputStream();
 
 os.write("\r\n".getBytes());
 int ch = 0;
 while(ch != -1) {
     ch = is.read();
 }
 
 is.close();
 os.close();
 sc.close();

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

フィールドの概要
static byte DELAY
          書き込みを行う際に小さなバッファを使用したディレイに関する設定を行うことを示すソケット・オプション識別子(=0)です。
static byte KEEPALIVE
          キープ・アライブ特性(接続を維持しつづける特性)に関する設定を行うことを示すソケット・オプション識別子(=2)です。
static byte LINGER
          ソケットをクローズする際に未送信のデータがある場合に待つ秒数に関する設定を行うことを示すソケット・オプション識別子(=1)です。
static byte RCVBUF
          受信バッファのサイズの設定を行うことを示すソケット・オプション識別子(=3)です。
static byte SNDBUF
          送信バッファのサイズの設定を行うことを示すソケット・オプション識別子(=4)です。
 
メソッドの概要
 String getAddress()
          ソケットと結び付けられているリモート・アドレスを返します。
 String getLocalAddress()
          ソケットと結び付けられているローカル・アドレスを返します。
 int getLocalPort()
          ソケットと結び付けられているローカル・ポートを返します。
 int getPort()
          ソケットと結び付けられているリモート・ポートを返します。
 int getSocketOption(byte option)
          この接続に設定されているソケット・オプションを取得します。
 void setSocketOption(byte option, int value)
          この接続にソケット・オプションを設定します。
 
インタフェース javax.microedition.io.InputConnection から継承されたメソッド
openDataInputStream, openInputStream
 
インタフェース javax.microedition.io.OutputConnection から継承されたメソッド
openDataOutputStream, openOutputStream
 
インタフェース javax.microedition.io.Connection から継承されたメソッド
close
 

フィールドの詳細

DELAY

static final byte DELAY

書き込みを行う際に小さなバッファを使用したディレイに関する設定を行うことを示すソケット・オプション識別子(=0)です。 小さなバッファを用いるネーグル・アルゴリズムを無効にする場合はソケット値に 0 を渡します。 有効にする場合は 0 以外の値を渡します。

関連項目:
setSocketOption(byte, int), 定数フィールド値

LINGER

static final byte LINGER

ソケットをクローズする際に未送信のデータがある場合に待つ秒数に関する設定を行うことを示すソケット・オプション識別子(=1)です。 待たずにクローズする場合はソケット値に 0 を渡します。

関連項目:
setSocketOption(byte, int), 定数フィールド値

KEEPALIVE

static final byte KEEPALIVE

キープ・アライブ特性(接続を維持しつづける特性)に関する設定を行うことを示すソケット・オプション識別子(=2)です。 ソケット値に 0 を指定すると特性は無効になります。 0 以外を指定すると特性は有効になります。

関連項目:
setSocketOption(byte, int), 定数フィールド値

RCVBUF

static final byte RCVBUF

受信バッファのサイズの設定を行うことを示すソケット・オプション識別子(=3)です。

関連項目:
setSocketOption(byte, int), 定数フィールド値

SNDBUF

static final byte SNDBUF

送信バッファのサイズの設定を行うことを示すソケット・オプション識別子(=4)です。

関連項目:
setSocketOption(byte, int), 定数フィールド値
メソッドの詳細

setSocketOption

void setSocketOption(byte option,
                     int value)
                     throws IllegalArgumentException,
                            IOException

この接続にソケット・オプションを設定します。

オプションはアプリケーションがソケット接続を使用する際に意図する用法パターンを、ネットワーク・アクセスを行う低レベル・コードに知らせるために使用します。

バッファ・サイズを割り当てるためにこのメソッドを呼び出すのは、基本的なネットワーク入出力バッファ・サイズを設定するプラットフォームへのヒントです。 getSocketOption(byte) を呼び出すとシステムがどのような値を使用しているのか知ることができます。 システムは現在のネットワーク情報から利用可能な Maximum Transmission Unit (MTU) と Maximum Segment Size (MSS) データから有効なより良い効率を得るようにバッファ・サイズを調整することがあります。

パラメータ:
option - ソケット・オプション識別子を渡します。
value - 指定したソケット・オプションに設定する値を渡します。
例外:
IllegalArgumentException - 値が有効ではない(例えば負数)かオプション識別子が有効ではない場合に throw します。
IOException - 接続がクローズされた状態で呼び出された場合に throw します。
関連項目:
KEEPALIVE, LINGER, SNDBUF, RCVBUF, DELAY, getSocketOption(byte)

getSocketOption

int getSocketOption(byte option)
                    throws IllegalArgumentException,
                           IOException

この接続に設定されているソケット・オプションを取得します。 指定されたソケット・オプションが無効な場合は -1 を返します。

パラメータ:
option - ソケット・オプション識別子を渡します。
戻り値:
指定されたソケット・オプションの値あるいは -1 を返します。
例外:
IllegalArgumentException - ソケット・オプション識別子が無効な場合に throw します。
IOException - 接続がクローズされた状態で呼び出された場合に throw します。
関連項目:
KEEPALIVE, LINGER, SNDBUF, RCVBUF, DELAY, setSocketOption(byte, int)

getLocalAddress

String getLocalAddress()
                       throws IOException

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

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

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

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

getLocalPort

int getLocalPort()
                 throws IOException

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

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

getAddress

String getAddress()
                  throws IOException

ソケットと結び付けられているリモート・アドレスを返します。 アドレスは(利用可能であれば)リモートホスト名か IP アドレスのいずれかになります。

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

getPort

int getPort()
            throws IOException

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

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

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 はこちらです。