第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール

Slides:



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

プログラミング第5回 1 while ループ 文字列の操作
第11回Javaゼミ 11.1 ファイルとディレクト リ 11.2 文字ストリーム 11.3 バッファ付き文字スト リーム 2006/06/28 神津 健太.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
ファイアウォール 基礎教育 (4日目).
第1回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
IO - 入出力 小西 亨.
アルゴリズムとプログラミング (Algorithms and Programming)
ネットワークプログラミング論 平成27年10月12日 森田 彦.
ネットワーク層.
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
Windows Network Programming
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
TCPソケットプログラミング ソケットプログラミング TCP-echoのデータ通信手順
HTTPプロトコルとJSP (1) データベース論 第3回.
Copyright Yumiko OHTAKE
トランスポート層.
第20章 Flyweight ~同じものを共有して無駄をなくす~
ま と め と 補 足 ネットワークシステムⅠ 第15回.
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
第12回独習Javaゼミ 12章セクション3~4 発表者 直江 宗紀.
ネットワークプログラミング論 平成28年10月17日 森田 彦.
RMI ソフトウェア特論 第6回 /
情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2)
第2章 第1節 情報通信の仕組み 1 ネットワークの仕組み 2 通信プロトコル 3 認証と情報の保護
廣安知之 + クラスタ研究グループ 同志社大学
プログラミング演習3 第2回 GUIの復習.
Linux リテラシ 2006 第4回 ネットワーク CIS RAT.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
変数のスコープ クラス クラス変数 すべてのメソッドの外側でstaticで定義
第11章 UDPユーザ・データグラム・プロトコル
JAVA入門.
サブゼミ第9回 実装編③ 永続化とjava.ioパッケージ.
UDPエコーサーバ UDP-echoサーバのプログラムモデル(Cプログラム) サーバで利用するソケット関数(Cプログラム)
UDPマルチキャストチャット                    空川幸司.
例外処理 と ファイル入出力 情報システム学科 平塚 聖敏.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
リファレンスの復習と例外処理 2005年6月14日 海谷 治彦.
暗号技術 ~JAVAプログラム③~ (7週目)
ソケットプログラム(TCP,UDP) EasyChat開発
WebサービスII (第7回) 2007年11月7日 植田龍男.
サブネットワーク 一つのネットワークアドレス内部を分割して ホスト台数が少ないネットワークを複数作る 192.168.1.0
ソケットプログラム(TCP,UDP) EasyChat開発2
暗号技術 ~JAVAプログラム①~ (5週目)
インターネットにおける真に プライベートなネットワークの構築
Ibaraki Univ. Dept of Electrical & Electronic Eng.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
UDPマルチキャストチャット    空川幸司.
Recoveryアドバイスをもつ アスペクト指向システム
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
暗号技術 ~JAVAプログラム②~ (6週目)
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
4.3 IPとルーティングテーブル 国際産業情報学科 2年 大竹 雅子.
JAVA入門⑥ クラスとインスタンス.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
SMTPプロトコル 2001年8月7日 龍 浩志.
TCP/IPの通信手順 (tcpdump)
UDPデータグラムヘッダ 牧之内研究室 修士1年 久保正明.
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール 第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール 6.4 Webアプリケーション 6.5 チャットアプリケーション

6.2 Javaによるネットワーク処理 6.2.1 ネットワークアドレス処理 ネットワーク処理のためのAPI(Application Programming Interface )としての java.net パッケージに InetAddress クラスが用意されている。 ① InetAddress のクラスメソッド ■ getByName : hostで指定された機器のIPアドレスを取得する。見つからない場合,UnknownHostException例外を発生させる。 [呼出し形式] public static InetAddress getByName(String host) throws UnknownHostException ■ getLocalHost : このメソッドを呼び出すプログラムが動作しているコンピュータのホスト名を取得する。 public static InetAddress getLocalHost() throws UnknownHostException

ネットワークアドレス処理(その2) ② InetAddress のフィールド値を取得するメソッド ■ getHostAddress : 10進数のドット付きIPアドレスを文字列として取得。 [呼出し形式] public String getHostAddress() ■ getHostName : InetAddressオブジェクトが表すホスト名とIPアドレスを含む文字列を取得する。 public String getHostName() (注)InetAddress以外に, Inet4Address(IPv4用) ,Inet6Address(IPv6用)がある。

プログラム例 (プログラムが動作しているマシンのIPアドレスとホスト名を取得) Import java.net.*; // java.netパッケージのインポート public class InetAddressTest { public static void main(String[] args){ try { // このプログラムのローカルホスト名を取得 InetAddress hostinfo = InetAddress.getLocalHost(); System.out.println("host Info : " + hostinfo); } catch(UnknownHostException e){} //見つからなければ無視 }

6.2.2 ストリーム型通信処理 TCPを用いるアプリケーションでは,コネクション確立後ストリームを使ってデータの送受信を行う。ストリームのインターフェースはソケットという概念が用いられる。 ① Socket クラス [コンストラクタ] ■ public Socket(String host, int port) throws UnknownHostException, IOException   hostで指定されたコンピュータ上のポート番号portに対応するソケットを生成し,通信先のコンピュータとのコネクションを確立する。 ■ public Socket(InetAddress address, int port) throws IOException   addressで指定されたコンピュータ上のポート番号portに対応するソケットを生成し,通信先のコンピュータとのコネクションを確立する。addressは,InetAddressオブジェクトの生成による。 [通信の完了] ■ public void close() throws IOException   ソケットを閉じて通信を完了する。

サーバ用ソケット ② Server Socket クラス [コンストラクタ] ■ public ServerSocket(int port) throws IOException  portで指定されたポート番号でクライアントからの接続を待ち受けるソケットを生成する。 [通信の完了] ■ public void close() throws IOException   サーバソケットを閉じて通信を完了する。 [メソッド] ■ public Socket accept() throws IOException  クライアントから接続要求を受け取ったSocketオブジェクトを取得する。このSocketオブジェクトによりデータ送受信を行う。

(例)クライアントから「Hello」という文字列をサーバに送り, サーバ側で受信した文字列をコンソールに出力する [クライアント側] import java.net.*; // java.netパッケージのインポート Import java.io.*;  // java.ioパッケージのインポート public class SimpleClient { public static void main(String[] args){ try { // Localhost,6000番のポートでSocketオブジェクトを生成する。 Socket socket = new Socket("localhost",6000);      // バッファ出力ストリームの生成 BufferedWriter out= new BufferedWriter( new outputStreamWriter(socket.getOutputStream())); out.write("Hello"); // 文字列"Hello"を出力 out.flush(); // バッファ出力を完了する。 out.close(); // 出力のクローズ socket.close(); // ソケットをクローズ } catch(IOException e){System.err.println(e);} }

[サーバ側] Import java.net.*; // java.netパッケージのインポート Import java.io.*;  // java.ioパッケージのインポート public class SimpleServer { public static void main(String[] args){ try { // 待受けポート番号を6000番とする。 ServerSocket serverSocket = new ServerSocket(6000); while(true){       // 接続要求を受け取ったクライアントの取得        Socket clientSocket = serverSocket.accept(); BufferedReader in= new BufferReader( new InputStreamReader(clientSocket.getInputStream())); String line = in.readLine(); // 1行文字列を入力   System.out.println(line); // コンソールに表示 in.close();      // 入力のクローズ   clientSocket.close(); // ソケットをクローズ   serverSocket.close(); // ソケットをクローズ } } catch(IOException e){}

6.2.3 データグラム型通信処理 UDPを用いるアプリケーションでは,データグラムパケットを利用してデータの送受信を行う。 6.2.3 データグラム型通信処理 UDPを用いるアプリケーションでは,データグラムパケットを利用してデータの送受信を行う。 ① Datagram Socket クラス [コンストラクタ] ■ public DatagramSocket() throws SocketException   DatagramSocketクラスオブジェクトは,生成時に利用可能なポート番号が割り当てられる。ソケットが生成できない場合,SocketException例外が発生する(可能性は低い)。 ■ public DatagramSocket(int port) throws SocketException   portで指定したDatagramSocketクラスオブジェクトを生成する。ソケットが生成できない場合,SocketException例外が発生する。例外発生は,指定したポート番号がすでに使用されている可能性が高い。

データグラム型通信処理(その2) [メソッド] ■ public void send(DatagramPacket p) throws IOException   データグラムパケットpを送信する。 ■ public void receive(DatagramPacket p) throws IOException   データグラムパケットpを受信する。このメソッドはデータが到着するまでプロセスをブロックするので,データ受信以外の処理を行うにはスレッドとして扱う必要がある。 ■ public void close() throws SocketException   DatagramSocketオブジェクトが使用しているポートを開放する。

データグラムパケット データグラムパケットを用いるには,DatagramPacketオブジェクトを生成する必要がある。 ②DatagramPacket クラス [コンストラクタ] ■ public DatagramPacket(byte[] buff, int length)   データを格納するbyte配列buffとデータのバイト数lengthを指定してDatagramPacketクラスオブジェクトを生成する。 ■ public DatagramPacket(byte[] buff, int length,InetAddress address, int port)   データを格納するbyte配列buff,データのバイト数length,送信先のIPアドレスaddress,ポート番号portを指定してDatagramPacketクラスオブジェクトを生成する。

6.2.4 マルチキャスト通信処理 ■ 特定のグループに対してデータ配信を行うには,マルチキャストグループを指定する。 6.2.4 マルチキャスト通信処理 ■ 特定のグループに対してデータ配信を行うには,マルチキャストグループを指定する。 ■ マルチキャストグループは,クラスDのIPアドレスとポート番号で指定する。すなわち,個別のコンピュータを指定することはできない。範囲は(224.0.0.0~239.255.255.0)。 ■ マルチキャストによるパケットはすべてのコンピュータに対して発信され,受信コンピュータは,自分がマルチキャストグループに属している場合に限りパケットを受取る。 ■ マルチキャスト対応ルータで,かつマルチキャスト有効に設定されたルータだけがパケットを通過させる。通常は通過させない。

MulticastSocketの利用手順 ② マルチキャストグループへの参加(joinGroup メソッドを使用) ③ マルチキャストグループでのデータ送受信(send メソッド,receiveメソッドを使用) ④ マルチキャストグループからの離脱(leaveGroup メソッドを使用) ⑤ マルチキャストソケットを閉じる(close メソッドを使用)

MulticastSocket クラス(その1) [コンストラクタ] ■ public MulticastSocket(int port) throws IOException  portで指定したポート番号を使用するマルチキャストソケットを生成する。ソケットが生成できない場合,IOException例外が発生する。 [メソッド] ■ public void joinGroup(InetAddress mcastaddr) throws IOException  mcastaddrで指定されたマルチキャストグループに参加する。マルチキャストアドレス以外が指定された場合,IOException例外が発生する。 ■ public void leaveGroup(InetAddress mcastaddr) throws IOException  mcastaddrで指定されたマルチキャストグループから離脱する。マルチキャストアドレス以外が指定された場合,IOException例外が発生する。

MulticastSocket クラス(その2) ■ public void send(DatagramPacket p) throws IOException  DatagramPacketオブジェクトpをマルチキャストグループに送信する。送信データ,データの長さ,IPアドレス,ポート番号はパケットに含まれている。 ■ public void receive(DatagramPacket p) throws IOException  マルチキャストソケットを通して,DatagramPacketオブジェクトpを受信する。 ■ public void close() throws SocketException  マルチキャストソケットを閉じる。