前編 シンプルなSIPアプリケーションの構築

最もシンプルなSIPアプリケーションの構築

 前編では、JAIN SIPの仕様策定リーダーであるNISTが提供するSIP Communicatorを用い、SIPを用いたクライアント同士の呼び出し制御およびJMFを用いた音声チャットアプリケーション(マルチメディアコミュニケーション環境)の構築を行います。

 
アプリケーションの構成

 発信者は「ユーザ@IPアドレス」を入力し、「Connect」ボタンをクリックすることで相手を呼び出します。呼び出された相手のアプリケーションでは、呼び出し音が鳴ります。相手は「Answer」ボタンをクリックすることで、相互が通信可能(通話可能)になります。

  この呼び出しと応答のプロトコルにSIPが使用されます。SIPの操作はJAIN SIP APIで実装されているSIP Communicatorを用います。通信セッションの確立後は、RTPを用いて、音声や映像の交換が行われます。SIP Communicatorでは、それらをJMF(Java Media Framework)を用い処理します。よって、呼び出しやそれに対しての応答、終了通知などセッションの確立および終了処理がSIPの役割で、その後のメディア操作や送受信は、RTPやJMFで行うことになります。

JAIN SIPクライアントの構築

■SIP Communicatorとは

  SIP CommunicatorはNISTが提供するJavaクライアントアプリケーションです。このアプリケーションは、ネットワーク上のマシンと双方向音声、映像配信を行うことができます。通信の開始や終了など通信制御にJAIN SIPを用い、音声や映像の操作はJMFを使用しています。

 SIP Communicatorのソースコードは、バイナリダウンロードサイトからダウンロードすることができます。よって、このアプリケーションをベースに自身でさまざまな機能を拡張することができます。また、このNIST SIP Communicator構築プロジェクトに参加し、自分で作成したモジュールを世界に配信することも可能です。なお、このアプリケーションのライセンスポリシーはjava.net(SIP Communicator)から確認することができます。

■JAIN SIPクライアントのインストール

 あらかじめJ2SE 1.4か それ以降のバージョンのJDKをインストールしておいてください(UNIX環境の場合はJ2SE1.4.2以降)。

 次のサイトからOSに応じたSIP Communicatorのバイナリをダウンロードします。

SIP Communicatorのダウンロードサイト

 なお、前述したようにSIP Communicatorはソースコードを取得することもできます。ソースコードもバイナリ同様、このサイトからダウンロードすることができます。

■SIP Communicatorのインストール

 sip-Communicator-*.zipを解凍します。

■SIP Communicatorの起動と設定

1.起動

 解凍後、sip-Communicatorディレクトリ以下に、sip-Communicator.bat(UNIXの場合はsip-Communicator.sh)ファイルが作成されます。この実行スクリプトを実行すると、SIP Communicator設定ウィンドウが起動します。

SIP Communicator設定ウィンドウ

2.個人情報の入力

 
個人情報を入力します。下記の要領に従って入力してください。

Your Name
レジストリサーバに登録する名前
SIP Address
SIPアドレス(ユーザー名@ドメイン名)

個人情報の入力

3.SIPレジストリサーバの登録

 ここではSIPサーバは用いないため、この情報は必要としませんが、後編のJSLEE Serverを用いた環境で必要としますので設定しておいてください。また、SIPアドレスのドメインは、任意のもので結構ですが、この後JSLEEサーバの環境構築時に、どのドメインに対する呼び出しメッセージを許可するか等を設定しますので、今後SIPドメインを設定する個所では、すべて統一したドメイン名を使用してください。

 下記の要領で入力してください。

SIP Server
SIPレジストリサーバ名
後編で環境構築を行うJSLEE Serverのホスト名を定義します。必ずドメイン名も入れます
User Name
SIPレジストリサーバへのログインユーザ名
任意のログイン名を定義します

SIPサーバ名の設定

4.JMFのイニシャライズ

 「Start JMF Initialization」ボタンをクリックし、SIP CommunicatorとともにダウンロードしたJMF環境をイニシャライズします。

JMF環境のイニシャライズ

5.IPアドレスの設定

 SIP Communicatorが通信を行うためのIPアドレスです。デフォルトでプライマリのIPアドレスが選択されます。2つ以上IPアドレスがある場合は選択してください。

SIP Communicatorが通信を行うためのIPアドレスの入力

6.登録情報の確認

登録情報を確認し「Finish」をクリックして設定を終了

 以上で設定は完了です。続いてSIP Comuunicatorが起動します。

 レジストリサーバへのログイン画面が表示されます。 ここでは、レジストリサーバ環境を使用しませんので、「cancel」をクリックしてください。

SIP Communicatorが通信を行うためのIPアドレスの入力

 SIP Communicatorが起動します。

起動したSIP Communicator

 この設定をもう1台のSIP Communicator環境でも行ってください。

SIPアプリケーションの実行


 一方のマシンから<ユーザー名>@IPアドレスでSIP Communicatorをインストールした相手を呼び出します。

 ここでは、bob@abc.comからtom@200.1.1.6を呼び出しています。ステータスは、「Dialing」となっています。この間、呼び出されたマシン上では、呼び出し音が鳴っています。 

SIPクライアントから相手を呼び出す

 このとき相手を呼び出す際に使用されるSIPのINVITEメッセージは次のとおりです。あて先から、TomをIPアドレスを用いて呼び出していることが分かります。ちなみに後編で紹介するJSLEEを利用した構築では、IPアドレスではなくSIPアドレスを用いて通信を行います。

Call-ID: 71ccc6d035a965d76e2953a84b97dd36@200.1.1.1
CSeq: 1 INVITE
From: "Bob" <sip:bob@abc.com:5060;transport=udp>;tag=15136722

To: <sip:tom@200.1.1.6>;tag=15999328
Via: SIP/2.0/UDP 200.1.1.1:5060;branch=
z9hG4bK6b5aa63607382f52d23b71da3527b9bc
(実際には1行)

Max-Forwards: 70
Content-Type: application/sdp
Contact: "Tom" <sip:200.1.1.6:5060;transport=udp>
Content-Length: 153

 次に、相手が「Answer」ボタンをクリックすると、画面のようにステータスは「Connected」となり、通信が開始されます。このとき、相手側にビデオ入力デバイスが付いていれば、映像も送信されますので、画面中央の表示位置に、映像が映し出されます。今回使用した環境では、ビデオデバイスは用意していなかったため、グレー表示になっています。

 「Hangup」ボタンをクリックすることで、セッションは終了します。

「Answer」ボタンを押すと「Connected」が表示され接続される

 このように相手の呼び出しや終了にSIPを用い、セッションの制御を行いました。しかし、ここではIPアドレスを用い、呼び出しを行ったため、相手がどこにいるかをあらかじめ特定する必要がありました。しかし、現在のネットワーク環境を考えたときに、相手の希望する端末のIPアドレスを把握しておくことは難しいでしょう。そこで、それら問題を解決するのがSIPとIPアドレスのマッチングや状態管理、SIPルーティングを行うSIPアプリケーションです。SIPアプリケーションには大きく分けて、プロキシサービス、レジストラサービスそしてロケーションサービス、リダイレクトサービスがあります。

 後編では、それらをJSLEE上で実現する、新しいサービス環境の構築を行います。

2/2

 INDEX

Javaで音声チャットアプリを作ろう(前編)
  Page1
SIPを身近なものにするJAIN SIP
JSLEE製品の試行も始まる
本稿のシナリオ
Page2
最もシンプルなSIPアプリケーションの構築
JAIN SIPクライアントの構築
SIPアプリケーションの実行





Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間