Download presentation
Presentation is loading. Please wait.
1
P2P Chat Program Using JXTA
情報科学部ディジタルメディア学科 01k1024 諸星 宏行
2
P2Pとは パソコン、PDA、携帯電話、ワークステーションなどの各デバイス(ピアという)同士が同時に通信しあう仕組みのこと
中央で一括処理するサーバなどを必要とせず、ピア同士でさまざまなリソースやサービスを提供しあうことが出来る
3
通信形態 ハイブリッド型 サーバが存在するP2P。クライアント側でリソースを保持し、サーバにリソースの所在を問い合わせる。リソースの提供はクライアント間で行う。 ピュア型 クライアント、サーバといった役割が存在せず、ピアのみで動作する
4
P2Pの利用 Distributed Processing 大規模なデータ処理を分割し、ネットワーク に散在するコンピュータで処理する
Collaboration 複数の利用者の協調作業を支援する Storage ファイル交換やハードディスクの分散
5
JXTAの概要 P2Pを実現するためにSunが発表したプロトコル コンセプト 相互運用性(Interoperability)
プラットフォーム非依存(Platform independence) OS、プログラミング言語、通信プロトコルなどに依存しない 利用性(Ubiquity) コンピュータ、PDA、携帯電話、サーバ、家電製品などの各デバイスで実装が可能
6
JXTAの構成要素(1) Peer・・・ネットワークを構成する最小単位 Peer Group・・・ピア群が集まって構成される
Simple Peer・・・単一のエンドユーザのために働くピア Rendezvous Peer・・・他のピアやピアのリソースを発見するためのネットワーク上の場所を提供するピア Relay Peer・・・隔離されたプライベート内のピアとグローバル内のピアとの通信メカニズムを提供するピア Peer Group・・・ピア群が集まって構成される ピア群にサービスを提供するグループのことで、オープンなグループからセキュアなグループまで作成可
7
JXTAの構成要素(2) Service・・・ピアが利用する可能性のある基本機能 Pipe・・・ピアがお互いに通信するための伝送路
PeerService・・・ピアが提供するサービス PeerGroupService・・・ピアグループが提供するサービス Pipe・・・ピアがお互いに通信するための伝送路 Advertisement・・・ピア、パイプ、サービスなどさまざまなリソースを表わすXML文書 公開されているアドバタイズメントからどのリソースが利用できるかといった情報を知ることができる
8
Chat Application (JXTA)
Peer Discovery Protocol 自身のリソースが記されているAdvertisementを公開する Advertisementを取得する Peer Binding Protocol メッセージをやり取りする伝送路の確立 パイプアドバタイズメントの作成と公開 アドバタイズメントの検索・発見 レスポンスメッセージからアドバタイズメントの取得 アドバタイズメントから In/Outputパイプを作成 アドバタイズメントから In/Outputパイプを作成 パイプを通じて メッセージのやりとり
9
Chat Application (JXTA)
Advertisementの作成と公開 discSvc = netPeerGroup.getDiscoveryService(); pipeAdv = (PipeAdvertisement)AdvertisementFactory.newAdvertisement( PipeAdvertisement.getAdvertisementType() ); pipeAdv.setName( PIPE_NAME ); // パイプ名のセット pipeAdv.setPipeID( IDFactory.newPipeID( netPeerGroup.getPeerGroupID() ) ); // ID pipeAdv.setType( PipeService.PropagateType ); // パイプ種別をセット discSvc.Publish( pipeAdv, DiscoveryService.ADV ); // ローカルに公開 discSvc.remotePublish( pipeAdv, DiscoveryService.ADV ); // リモートに公開 Input/OutputPipeの作成 inPipe = pipeSvc.createInputPipe( pipeAdv, this ); // Inputパイプ生成 outPipe = pipeSvc.createOutputPipe( pipeAdv, TIME_TO_WAIT ); // Outputパイプ生成 Advertisementの検索 discSvc.getRemoteAdvertisements(null, DiscoveryService.ADV, null, null, 5, this);
10
Chat Application (JXTA)
ResponseからAdvertisementを取得する public void discoveryEvent( DiscoveryEvent ev ){ // Advertisement発見時に呼び出される DiscoveryResponseMsg resMsg = ev.getResponse(); if( pipeAdv.getName().equals( PIPE_NAME ) && pipeAdv.getType().compareTo( PipeService.PropagateType ) == 0 ) createPipes( pipeAdv ); // Input, Outputパイプ作成メソッド Messageを送信する Message msg = pipeSvc.createMessage(); MessageElement = msg.newMessageElement( MSG_TAG_SENDER, // 送信者名の追加 new MimeMediaType( “text/plain” ), new ByteArrayInputStream( sender.getBytes() ) ); msg.addElement( messageElement ); // この後、メッセージ本体も同様に追加する outputPipe.send( msg ); Messageを取得する public void pipeMsgEvent( PipeMsgEvent evt ){ // メッセージ受信時に呼び出される Message message = evt.getMessage();
11
Chat Application(Server-Client)
メッセージはサーバを介して送られる input.readUTF() output.writeUTF() input.readUTF() output.writeUTF() ・・・・・・・・ ・・・・・・・・ output.writeUTF() input.readUTF() output.writeUTF() input.readUTF() Server側 ServerSocketを生成し、Clientから要求を待つポートを設定する ServerSocket s = new ServerSocket( port, queueLength ); クライアントからの接続を待つ Soket connection = s.accept(); ストリームソケットに入力、出力ストリームを連結する DataInputStream input = new DataInputStream( connection.getInputStream() ); DataOutputStream output = new DataOutputStream( connection.getOutputStream() ); コネクションを閉じる Connection.close();
12
Chat Application(Server-Client)
Socket connection = new Socket( serverAddress, port ); ストリームソケットに入力、出力ストリームを連結する DataInputStream input = new DataInputStream( connection.getInputStream() ); DataOutputStream output = new DataOutputStream( connection.getOutputStream() ); コネクションを閉じる Connection.close(); 参考文献名: C Magazine/2003年01号/P37~74 JXTAのすべて(日経BP) Java How to Program Vol.2(ピアソン)
13
Projext JXTAのインストール Project JXTA Demosをダウンロード
にアクセスする 一番上にある「Download Project JXTA Demos Now! myJxta Demo App and Latest Shell」を選択し、Windowsのincludes Java_VMをダウンロード Project JXTA Demosをインストール ダウンロードしたJXTAInst_VM.exeを選択し、全てデフォルトでインストールする JXTA Demoを動かしてみる スタート -> プログラム -> Jxta -> JXTA Shellを選択 初回起動時に設定を必要とするのでPeerName, UserName, Passwordを入力する Relay Setting でUse a Relayをチェックする Download relay and rendezvous lists から利用できるランデブーピアのIPをダウンロードする OKを押して起動
14
Projext JXTAのインストール Programmingをする
からProgrammers Guideをダウンロードしてみてください。 また、プログラミングにはクラスパスの再設定が必要です。 java -classpath C:\Program Files\JXTA_Demo\lib\jxta.jar;C:\Program Files\JXTA_Demo\lib\log4j.jar;C:\Program Files\JXTA_Demo\lib\beepcore.jar;C:\Program Files\JXTA_Demo\lib\jxtasecurity.jar;C:\Program Files\JXTA_Demo\lib\cryptix-asn1.jar;C:\Program Files\JXTA_Demo\lib\cryptix32.jar;C:\Program Files\JXTA_Demo\lib\jxtaptls.jar;C:\Program Files\JXTA_Demo\lib\minimalBC.jar; (実行Javaクラス名) また、この際バッチファイルなどを作っておくのも便利です
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.