第12回独習Javaゼミ 12章セクション3~4 発表者 直江 宗紀.

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

TCP/IP によるチャットプログラ ム 薄井 秀晃. 基礎知識編 TCP/IP とは? IP とは・・・ Internet Protocol の略称であり通信方法の技術的なルールで あり、実際にデータを送受信する前にデータを小さなデータ に分割し、それに発信元と受信先の IP アドレスを付加させて.
プログラミング第5回 1 while ループ 文字列の操作
第11回Javaゼミ 11.1 ファイルとディレクト リ 11.2 文字ストリーム 11.3 バッファ付き文字スト リーム 2006/06/28 神津 健太.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
第四回 Qtの使い方講座.
第1回.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
IO - 入出力 小西 亨.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎I(再) 山元進.
TCP (Transmission Control Protocol)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
「コンピュータと情報システム」 07章 インターネットとセキュリティ
30分でわかるTCP/IPの基礎 ~インターネットの標準プロトコル~ 所属: 法政大学 情報科学研究科 馬研究室 氏名: 川島友美
ネットワーク コミュニケーション トランスポート層 TCP/UDP 6/28/07.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
TCPソケットプログラミング ソケットプログラミング TCP-echoのデータ通信手順
HTTPプロトコルとJSP (1) データベース論 第3回.
トランスポート層.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
コンテンツ配信 エンコード (符号化) CBR (Constant Bit Rate) VBR (Variable Bit Rate)
第20章 Flyweight ~同じものを共有して無駄をなくす~
ま と め と 補 足 ネットワークシステムⅠ 第15回.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
第8章 Web技術とセキュリティ   岡本 好未.
イーサネット.
ネットワークプログラミング 中村 修.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
TCP/UDP プロセス間の通信のためのプロトコル TCP:信頼性高、処理時間大 UDP:信頼性低、処理時間小 ftp SMTP HTTP
インターネットの基礎知識 その3 ~TCP・UDP層編~
UDPマルチキャストチャット                    空川幸司.
例外処理 と ファイル入出力 情報システム学科 平塚 聖敏.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第7回独習Javaゼミ セクション 1~4 発表者 直江 宗紀.
リファレンスの復習と例外処理 2005年6月14日 海谷 治彦.
第15回独習Javaゼミ セクション14~15 発表者 直江宗紀.
ネットワーク技術II 第9.1課 TCP/IPプロトコルスイート
暗号技術 ~JAVAプログラム①~ (5週目)
第7回JavaScriptゼミ セクション4-5 発表者 直江 宗紀.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
5.9 メソッドのオーバーロード 5.10 変数の引渡し 2003/11/21 紺野憲一
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
独習Javaゼミ第10回 セクション1~3 発表者 直江 宗紀.
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
最低限インターネット ネットワークにつなぎましょ!
オブジェクト・プログラミング 第8回.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
第2回独習Javaゼミ 第3章 セクション4~5 発表者 直江 宗紀.
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
TCP/IPの通信手順 (tcpdump)
UDPデータグラムヘッダ 牧之内研究室 修士1年 久保正明.
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
ネットワークシステム ネットワークシステム概要.
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
Presentation transcript:

第12回独習Javaゼミ 12章セクション3~4 発表者 直江 宗紀

ネットワークプロトコル(1) ネットワーク通信 TCP/IPプロトコル プロトコル体系OSI参照モデル 下層から上層まで7層を持つ 世界で一般的に用いられるプロトコル 4層構造 ネットワークアクセス層 ネットワーク層(IP) トランスポート層(TCP、UDP) アプリケーション層

ネットワークプロトコル(2) 図1 TCP/IPモデルと各層で扱うデータの名前

ソケット ソケットとは ソケットの種類 プロトコルアクセス可能な代表的論理インターフェイス 主に2つの意味で用いられる APIの意味でのソケット(またはソケットAPI) TCPによるポイントツーポイント接続の一端(エンドポイント) ソケットの種類 UDPの通信:データグラムソケット TCPの通信:ストリームソケット 下位のプロトコルで用いるソケットもあるがここでは省く

12.3 データグラムソケットと データグラムパケット(1) 12.3 データグラムソケットと データグラムパケット(1) データグラムソケット TCP/IPプロトコルのサービスに対応するソケット データグラムパケット TCP/IPプロトコルにおけるUDPを利用する場合の送受信データ (本節ではUDPを用いる場合の送受信プログラム)

12.3 データグラムソケットと データグラムパケット(2) 12.3 データグラムソケットと データグラムパケット(2) TCPとUDPの違い TCP(コネクション型) コネクション型のサービスを提供 信頼性向上のためデータ欠落の発生時の再送を要求 その際、欠落データを破棄、等 UDP(ノンコネクション型) ノンコネクション型のサービスを提供 データ欠落監視を行わず、簡易的データ送受信を提供 データ欠落しても良いデータ(ストリーミングメディアデータ等)のやり取りに良く用いられる

12.3 データグラムソケットと データグラムパケット(3) 12.3 データグラムソケットと データグラムパケット(3) 送受信の流れ 送信側 宛先アドレスの作成 ソケットの作成 データグラムパケットの送信(send) ソケットを閉じる 受信側 受信準備・データ受信

データグラムソケットと データグラムパケットにおけるクラス DatagramPacketとDatagramSocketが用意 ソケット操作は後者のクラス、パケット送受信は前者のクラスで行う DatagramPacketコンストラクタ DatagramPacket(byte buffer[],int size) DatagramPacket(byte buffer[] , int size , InetAddress ia , int port)

DatagramPacketクラス(1) クラスに定義されている主なインスタンスメソッド InetAddress getAddress() 着信データグラムの場合、発信元マシンのアドレスを、発信データグラムの場合、宛先マシンのアドレスを返す byte[] getData() データが含むバイトの配列を返す int getPort() ポートを返す int getLength() パケット内のバイト数を返す

DatagramPacketクラス(2) 定義されている主なインスタンスメソッド(続き) void setAddress(InetAddress ia) iaにアドレスをセットする void setData(byte buffer[]) bufferにデータをセットする void setLength(int size) sizeで指定したサイズのパケットをセットする void setPort(int port) portにポートをセットする

DatagramSocketクラス DatagramSocketコンストラクタ 主なメソッド DatagramSocket() DatagramSocket(int port) 例外処理:throws SocketException 主なメソッド void receive(DatagramPacket dp) throws IOException 着信データグラムの監視 void send(DatagramPacket dp) throws IOException データグラムの送信 void close() ソケットのクローズ

12.3 データグラムソケットと データグラムパケット(4) 12.3 データグラムソケットと データグラムパケット(4) プログラム例(送信) import java.net.*; public class test2 { public static void main(String args[]){ byte buffer[]=new byte[20] ; for(int i=0;i<20;i++){ byte temp=(byte)(0x0041+i) ; buffer[i]=temp ; } try{ InetAddress ia=InetAddress.getLocalHost() ; int port=Integer.parseInt(args[0]) ; DatagramSocket ds=new DatagramSocket() ;

12.3 データグラムソケットと データグラムパケット(5) 12.3 データグラムソケットと データグラムパケット(5) プログラム例(送信:続き) DatagramPacket dp=new DatagramPacket(buffer,buffer.length,ia,port) ; ds.send(dp) ; } catch(Exception e){ e.printStackTrace() ; このプログラムを使って、データグラムパケットを送信する。 この送信したデータを受け取るためのプログラムを次頁に示す。

12.3 データグラムソケットと データグラムパケット(6) 12.3 データグラムソケットと データグラムパケット(6) プログラム例(受信) import java.net.*; public class test1 { private final static int BUFSIZE=20 ; private final static int endTime=1000 ; static public void main(String args[]){ try{ int port=Integer.parseInt(args[0]) ; DatagramSocket ds=new DatagramSocket(port) ; byte buffer[]=new byte[BUFSIZE] ; long time=System.currentTimeMillis() ; while(true){ long temp=System.currentTimeMillis()-time ;

12.3 データグラムソケットと データグラムパケット(7) 12.3 データグラムソケットと データグラムパケット(7) プログラム例(受信:続き) if(temp>endTime)break ; DatagramPacket dp=new DatagramPacket(buffer,buffer.length) ; ds.receive(dp) ; String str=new String(dp.getData()) ; System.out.println(str) ; } catch(Exception e){ e.printStackTrace() ; 送信プログラムを受信すると… [出力結果] ABCDEFGHIJKLMNOPQRST

12.4 URL(1) URL URLクラス Uniform Resource Locator:URL Webリソース識別を目的とする 記述形式 protocol://host:port/file 例: http://127.0.0.1:8000/index.html URLクラス URLを用いるために用いるクラス

URLクラス URLコンストラクタ 主なメソッド URL(String protocol,String host,int port,String file) URL(String protocol,String host,String file) 例外:throws MalformedURLException 主なメソッド InputStream openStream() throws IOException URL入力ストリームをオープン String getFile() String getHost() int getPort() String getProtocol()

12.4 URL(2) プログラム例 import java.net.*; import java.io.*; public class test3 { static public void main(String args[]){ try{ URL url=new URL(args[0]) ; InputStream is=url.openStream() ; byte buffer[]=new byte[1024] ; int i ; while((i=is.read(buffer))!=-1)System.out.write(buffer,0,i) ; } catch(Exception e)e.printStackTrace() ;

12.4 URL(3) プログラム例について 前頁プログラムを実行する際のコマンドライン引数 「file:test.txt」の場合 「http://」等のURLアドレスの場合 指定URLの内容を取得し、表示 例:「http://yahoo.co.jp/」としたとき →指定サイトのページのHTMLデータが出力される

練習問題1 任意の値2つ用意し、受信側アプリケーションに渡して四則計算させるプログラムを作成せよ。結果を送信側に返す必要は無い。また、データグラムを送信したマシンのインターネットアドレス及びポートも計算結果と共に表示させよ。

練習問題2 GoogleサイトTop(http://www.google.co.jp/)からHTMLデータを取得し、そのデータの中で改行タグ(<br>)が幾つ使われているのかを検証し、使用回数を表示するプログラムを作成せよ。 (ヒント:String型でデータを読む例) while((i=is.read(buffer))!=-1){ String temp=new String(buffer,0,i) ; }