P2P Chat Program Using JXTA

Slides:



Advertisements
Similar presentations
TCP/IP によるチャットプログラ ム 薄井 秀晃. 基礎知識編 TCP/IP とは? IP とは・・・ Internet Protocol の略称であり通信方法の技術的なルールで あり、実際にデータを送受信する前にデータを小さなデータ に分割し、それに発信元と受信先の IP アドレスを付加させて.
Advertisements

計算機リテラシーM 第 11 回 計算機・ネットワーク技術 伊藤 高廣
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
WebサービスII (第12回)‏ 2007年12月19日 植田龍男.
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Global Ring Technologies
JXTA Shell (3) P2P特論 (ソフトウェア特論) 第6回 /
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
ネットワークを利用した 環境情報データ自動収集 サーバシステムの開発
SSHのセキュリティ技術 SSH2 IPSec PKI TLS/ SSL
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
実習用サーバの利用開始手順 (Windowsの場合) TeraTerm Proをインストール 公開鍵をメールで送付
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
ISCCD7.5構築 その2 Middleware 導入
第4回ネットワーク講習会 医中誌・JCRのセットアップと利用方法
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
Peer Group P2P特論 (ソフトウェア特論) 第7回 /
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
James 近畿大学 理工学部 情報学科 03-242 藤森浩忠.
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室
インターネット メールサーバ DNSサーバ WWWサーバ ファイアウォール/プロキシサーバ クライアント.
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
HTTPプロトコル J2EE I 第7回 /
複数CPU間のための共有メモリ 小島 隆史(中央大学大学院理工学研究科 國井研究室)
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
iStorage NSシリーズ ウィルスチェック運用の手引き
RMI ソフトウェア特論 第6回 /
Flyingware : バイトコード変換による 安全なエージェントの実行
モバイルP2Pを用いた携帯電話 動画配信手法の提案 第3回
第8章 Web技術とセキュリティ   岡本 好未.
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
P2P方式によるオンラインゲームの研究、開発
ソケットプログラム(TCP,UDP) EasyChat開発
WebサービスII (第7回) 2007年11月7日 植田龍男.
キャンパスクラウドによる 実験環境の構築 情報ネットワーク特論 講義資料.
各種ルータに対応する P2P通信環境に関する研究
P2P概説 P2P概説 第2回 /
Ibaraki Univ. Dept of Electrical & Electronic Eng.
UDPマルチキャストチャット    空川幸司.
ネットワークプログラミング (5回目) 05A1302 円田 優輝.
Windows XP  ウィルスバスターインストール方法.
JXTAの概要 P2P特論 (ソフトウェア特論) 第3回 /
端末およびサービス透過的な 情報閲覧支援システムの構築
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
JXTA Shell (1) P2P特論 (ソフトウェア特論) 第4回 /
7-0.SWORD Client for WEKO インストールマニュアル Version 2.2
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
ネットワークプログラミング 05A1302 円田 優輝.
モバイルP2Pを用いた携帯電話 動画配信手法の提案 第2回 FM10019 種田研究室 古江和栄
JXTA Shell (2) P2P特論 (ソフトウェア特論) 第5回 /
P2P型アプリケーション用ライブラリ SUNET
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
SMTPプロトコル 2001年8月7日 龍 浩志.
JXTA総まとめ P2P特論 最終回 /
P2P & JXTA Memo For Beginners
TCP/IPの通信手順 (tcpdump)
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
VPNクライアント接続 サーバー保守のための安全な経路+作業者単位のアクセス制御 簡単な図 (網羅性より象徴性)
P2Pによる協調学習システム 唐澤 信介   北海道工業大学 電気工学専攻.
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

P2P Chat Program Using JXTA 情報科学部ディジタルメディア学科 01k1024 諸星 宏行

P2Pとは パソコン、PDA、携帯電話、ワークステーションなどの各デバイス(ピアという)同士が同時に通信しあう仕組みのこと 中央で一括処理するサーバなどを必要とせず、ピア同士でさまざまなリソースやサービスを提供しあうことが出来る

通信形態 ハイブリッド型 サーバが存在するP2P。クライアント側でリソースを保持し、サーバにリソースの所在を問い合わせる。リソースの提供はクライアント間で行う。 ピュア型 クライアント、サーバといった役割が存在せず、ピアのみで動作する

P2Pの利用 Distributed Processing 大規模なデータ処理を分割し、ネットワーク に散在するコンピュータで処理する Collaboration 複数の利用者の協調作業を支援する Storage ファイル交換やハードディスクの分散

JXTAの概要 P2Pを実現するためにSunが発表したプロトコル コンセプト 相互運用性(Interoperability) プラットフォーム非依存(Platform independence) OS、プログラミング言語、通信プロトコルなどに依存しない 利用性(Ubiquity) コンピュータ、PDA、携帯電話、サーバ、家電製品などの各デバイスで実装が可能

JXTAの構成要素(1) Peer・・・ネットワークを構成する最小単位 Peer Group・・・ピア群が集まって構成される Simple Peer・・・単一のエンドユーザのために働くピア Rendezvous Peer・・・他のピアやピアのリソースを発見するためのネットワーク上の場所を提供するピア Relay Peer・・・隔離されたプライベート内のピアとグローバル内のピアとの通信メカニズムを提供するピア Peer Group・・・ピア群が集まって構成される ピア群にサービスを提供するグループのことで、オープンなグループからセキュアなグループまで作成可

JXTAの構成要素(2) Service・・・ピアが利用する可能性のある基本機能 Pipe・・・ピアがお互いに通信するための伝送路 PeerService・・・ピアが提供するサービス PeerGroupService・・・ピアグループが提供するサービス Pipe・・・ピアがお互いに通信するための伝送路 Advertisement・・・ピア、パイプ、サービスなどさまざまなリソースを表わすXML文書 公開されているアドバタイズメントからどのリソースが利用できるかといった情報を知ることができる

Chat Application (JXTA) Peer Discovery Protocol 自身のリソースが記されているAdvertisementを公開する Advertisementを取得する Peer Binding Protocol メッセージをやり取りする伝送路の確立                                     パイプアドバタイズメントの作成と公開 アドバタイズメントの検索・発見 レスポンスメッセージからアドバタイズメントの取得 アドバタイズメントから In/Outputパイプを作成 アドバタイズメントから In/Outputパイプを作成  パイプを通じて メッセージのやりとり

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);

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();

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();

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(ピアソン)

Projext JXTAのインストール Project JXTA Demosをダウンロード http://www.jxta.org/ にアクセスする 一番上にある「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を押して起動

Projext JXTAのインストール Programmingをする http://www.jxta.org/project/www/Tutorials.html から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クラス名) また、この際バッチファイルなどを作っておくのも便利です