(Microsoft PowerPoint - \223\306\217KJava\221\346\202R\224\305.ppt)

Similar documents
12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

PowerPoint Presentation

PowerPoint Presentation

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

ISO( 国際標準化機構 ) により制定された異機種間のデータ通信を実現するためのネットワーク構造の設計方針. コンピュータの通信機能を 7 階層の階層構造に分割したモデルであり, 各層ごとに標準的な機能モジュールを定義している. 第 1 層 ( 物理層 ) データを通信回線に送出するための電気的な

ネットワークプログラミング(導入部)

4章 システム評価

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

オブジェクト指向プログラミング・同演習 5月21日演習課題

Network Programming

Microsoft PowerPoint ppt

JAVA 11.4 PrintWriter 11.5

Microsoft PowerPoint - netprog_2015_07.ppt [互換モード]

JavaプログラミングⅠ

Prog1_15th

K227 Java 2

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt

Programming-C-9.key

プログラミングA

デジタル表現論・第6回

9.3 同期 共有データへの読み書きの同期 複数のスレッドから共有データを読み書きするときに発生する問題について 一つのフィールドに対して複数のスレッドが同時にアクセスする可能性がある場合 その順番によっては整合性が保てなくなる可能性があるので スレッドの制御フローが独立していては困ることがある 次

通信ネットワーク補足 TCP サーバプログラムその 14 フロー制御基本は確実に伝達することでした 次に受け取るべき情報の確認応答 (ACK 番号 = 受け取った シーケンス番号 + 受信データ量 ) のメッセージ受信で相手が受け取ったと判断する訳ですがその応答セグメントを待っていると遅くなります

例外処理とファイル入出力

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

JavaプログラミングⅠ

Microsoft PowerPoint - OOP.pptx

応用プログラミング 2004/11/23 データの入出力 データの入出力データをキーボードからコンピュータに入力することや CRT に表示すること, さらにハードディスク (HDD) や MO などに保存されているファイルからデータをコンピュータに読み込むことや ( 逆に ) データをこれらの装置に

r1.dvi

Java講座

ファイル操作-バイナリファイル

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

Prog2_10th

Prog1_10th

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint ppt

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

情報通信の基礎

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

とても使いやすい Boost の serialization

2

2. ネットワークアプリケーションと TCP/IP 2.1. クライアント / サーバモデル TCP/IP プロトコルに従うネットワークアプリケーションの典型的モデルは, クライアント / サーバモデルである. クライアント / サーバモデルでは, クライアントからの要求に対してサーバがサービスを提

問題1 以下に示すプログラムは、次の処理をするプログラムである

メソッドのまとめ

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

Prog2_9th

PowerPoint プレゼンテーション

JavaプログラミングⅠ

Microsoft Word - CompA-Ex doc

2

Microsoft PowerPoint - chap10_OOP.ppt

プログラミング入門1

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

Android Layout SDK プログラミング マニュアル

プログラミング入門1

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

Microsoft PowerPoint - lec06 [互換モード]

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

PowerPoint プレゼンテーション

プログラミング入門1

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説

GEC-Java

JavaプログラミングⅠ

Prog1_6th

メソッドのまとめ

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

JavaプログラミングⅠ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

JAVA H13 OISA JAVA 1

ファイル入出力Ⅰ

Javaプログラムの実行手順

デジタル表現論・第4回

Prog1_11th

JavaプログラミングⅠ

基本情報STEP UP演習Java対策

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

2

スライド 1

FW ファイルアップロード ダウンロード機能利用ガイド Version 年 9 月 21 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

JavaプログラミングⅠ

JAVA入門

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

文字列操作と正規表現

基礎計算機演習 実習課題No6

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

untitled

2

Transcription:

独習 Java 第 3 版 12.1 インターネットアドレス 12.2 サーバーソケットとソケット 12.3 データグラムソケット とデータグラムパケット 12.4 URL

インターネットアドレス インターネットアドレスとは? 32 ビットの長さを持ち インターネットに接続されたマシンの識別のために用いられる アドレスはピリオドで区切られた 4 つの番号からなる ピリオドで区切られたトークンの並びで表現されることもある DNS(Domain Name System) とは? インターネットアドレスをドットストリング表記からどっと 10 進表記に変換する役割を持つ

InetAddress クラス java.net パッケージの InetAddress クラスはインターネットアドレスをカプセル化している InetAddress クラスに定義されている主なインスタンスメソッド メソッド byte[] getaddress() String gethostaddress() String gethostname() 説明アドレス情報を含むバイトの配列を返す データはネットワークバイトオーダー ( 最初の要素が上位バイト ) で格納されるアドレス情報を表す文字列を返すホスト名を表す文字列を返す

InetAddress のメソッド (1/2) getbyname() メソッド static InetAddress getbyname(stringhostname) throws UnknownHostException DNS によって提供される情報を使って名前からアドレスへの変換を実行する getallbyname() メソッド static InetAddress getallbyname(stringhostname) throws UnknownHostException ホストが複数のアドレスもっている場合使用する InetAddress オブジェクトの配列を取得できる

InetAddress のメソッド (2/2) どちらのメソッドも hostname にはインターネットホストの名前を指定 getlocalhost() メソッド static InetAddress getlocalhost() throws UnknownHostException ローカルホストの情報をカプセル化した InetAddress オブジェクトが返される

例 import java.net.*; class InetAddressDemo { public static void main(string[] args) { try{ // アドレスを取得する InetAddress ias[] = InetAddress.getAllByName(args[0]); for (int i=0; i<ias.length;i++){ System.out.println(ias[i].getHostName()); System.out.println(ias[i].getHostAddress()); byte bytes[] = ias[i].getaddress(); for(int j=0;j<bytes.length;j++){ if(j>0) System.out.print("."); if(bytes[j] >=0) System.out.print(bytes[j]); else System.out.print(bytes[j]+256); System.out.println(""); catch(exception e){ e.printstacktrace(); 実行結果 : C: java>java InetAddressDemo 127.0.0.1 localhost 127.0.0.1 127.0.0.1

サーバーソケットとソケット ソケットとは? 2 つのマシン間の双方向通信経路の一端 2 つのアプリケーションが 信頼性のある順次データ交換を行うためのメカニズムを提供 これはソケットが TCP(Transmission Control Protocol) と IP(Internet Protocol) を使用することによって実現されている ServerSocket クラス Socket クラスとは? クライアント / サーバーアプリケーションを作成するのに使用

ServerSocket クラス ServerSocket クラスは サーバーアプリケーションを作成するのに使用 クライアントから送られてくる要求を監視する ServerSocket コンストラクタ ServerSocket(intport) throws IOException port はクライアントからの要求を監視するためのソフトウェアポート 他の形式のコンストラクタは送られてくる要求待ちの行列を制限したり 特定のアドレスをバインド ( 監視 ) する

メソッド accept() メソッド Socket accept() throws IOException クライアントから送られてくる要求を監視する 要求が到着するまで待機する Socketオブジェクト ( クライアントとの通信に使用 ) を返す close() メソッド void close() throws IOException サーバーソケットをクローズするのに使用する

Socket クラス クライアントとサーバーのデータ交換には Socket クラスを使用する Socket クラス Socket(StringhostName, intport) throws UnknownHostException, IOException hostname はサーバーホストの名前 ( ドットストリング表記 or 10 進表記 ) port はそのサーバーのソフトウェアポートでソケットの接続先

メソッド (1/2) ソケットの作成後は通信に使う入力ストリームと出力力ストリームを取得する必要がある getinputstream() メソッド getoutputstream() メソッドを使用 InputStream getinputstream() throws IOException OutputStream getoutputstream() throws IOException

メソッド (2/2) InputStream オブジェクトと OutputStream オブジェクトは通常 それぞれの DataInputStream オブジェクト DataOutputStream オブジェクトの作成に使用 ソケットをクローズするには close() メソッドを使用 void close() throws IOException

例 (1/2) サーバーソフトウェア import java.io.*; import java.net.*; import java.util.*; public class ServerSocketDemo { public static void main(string[] args) { try{ // ポートを取得する int port = Integer.parseInt(args[0]); // 乱数ジェネレータを作成する Random random = new Random(); // サーバーソケットを作成する ServerSocket ss = new ServerSocket(port); // 無限ループを作成する while(true){ // クライアントからの要求を受け取る Socket s = ss.accept(); // 結果をクライアントに書き込む OutputStream os = s.getoutputstream(); DataOutputStream dos = new DataOutputStream(os); dos.writeint(random.nextint()); // ソケットをクローズする s.close(); catch(exception e){ System.out.println("Exception :"+e);

例 (2/2) クライアントソフトウェア import java.io.*; import java.net.*; class SocketDemo { public static void main(string[] args) { try{ // サーバーとポートを取得する String server = args[0]; int port = Integer.parseInt(args[1]); // ソケットを作成する Socket s = new Socket(server, port); // サーバーから乱数を読み取る InputStream is = s.getinputstream(); DataInputStream dis = new DataInputStream(is); int i = dis.readint(); // 結果を表示する System.out.println(i); // ソケットをクローズする s.close(); catch(exception e){ System.out.println("Exception: " + e);

実行例 サーバーソフトウェア起動の例 C: java>java ServerSocketDemo 4321 4321 は送られてくる要求の到着先となるソフトウェアポート 4321 でなくても構わないが 1024 より下の番号は避ける クライアントソフトウェア起動の例 C: java>java SocketDemo 127.0.0.1 4321 127.0.0.1 はローカルマシンを表す 2 番目の引数はサーバーアプリケーションの時と同じポート番号を指定しなければならない SocketDemo アプリケーションは乱数を表示すると終了

データグラムソケットとデータグラムパケット TCP(Transmission Control Protocol) ソケットでは 信頼性ある順次データ交換を実現するために用いられる 高い信頼性の確保と引き換えに高負荷 UDP(User Datagram Protocol) TCP の代わりに用いられるプロトコル 順次データの交換は保証されない TCP に比べ負荷が低い ( 高速に通信できる )

クラス java.net ライブラリにはデータグラムを使ったクライアント / サーバーアプリケーションの作成に使用できる 2 つのクラスが用意されている DatagramPacket クラス DatagramSocket クラス

DatagramPacket(1/3) DatagramPacket コンストラクタ DatagramPacket(bytebuffer[], intsize ) DatagramPacket(bytebuffer[], intsize, InetAddressia, intport) DatagramPacket クラスはデータグラムパケットをカプセル化する 前者は着信データグラムを受け取るのに使用する DatagramPacket オブジェクトの作成 buffer : 着信データが書き込まれるバイト配列 size :buffer のサイズ数

DatagramPacket(2/3) 後者は発信データグラムを送信するのに使用する DatagramPacket オブジェクトを作成 buffer : バイト配列でここから発信データを読み取る size :buffer から読み取るバイト数 ia, port : 受信側のインターネットアドレスとポートを指定

DatagramPacket(3/3) DatagramPacket クラスに定義されている主なインスタンスメソッド メソッド InetAddress getaddress() byte[] getdata() int getlength() int getport() void setaddress(inetaddressia) foid setdata(bytebuffer[]) void setlength(intsize) void setport(intport) 説明着信データグラムの場合 発信もとのマシンのアドレスを返す発信データグラムの場合 宛先のマシンのアドレスを返すデータが含むバイトの配列を返すパケット内のバイト数を返すポートを返す iaにアドレスをセットする bufferにデータをセットする sizeで指定したサイズのパケットをセットする portにポートをセットする

DatagramSocket(1/3) データグラムの送信と受信に使用 DatagramSocket コンストラクタ DatagramSocket() throws SocketException DatagramSocket(intport) throws SocketException 前者は利用可能なポートにデータグラムソケットをバインドする 後者はソケットを port にバインドする

DatagramSocket(2/3) receive() メソッド void receive(datagrampacketdp) throws IOException 着信データグラムを監視する データグラムが到着するまで待機する dp は着信データが格納される DatagramPacket オブジェクト

DatagramSocket(3/3) send() メソッド void send(datagrampacketdp) throws IOExcption データグラムを送信する dp は送信されるデータと宛先のホストとポートが格納される DatagramPacket オブジェクト データグラムソケットは close() メソッドを使用してクローズする close() メソッド void close()

例 (1/2) 受信側 import java.net.*; class DatagramReceiver { private final static int BUFSIZE = 20; public static void main(string args[]) { try { // ポートを取得する int port = Integer.parseInt(args[0]); // ポートの DatagramSocket オブジェクトを作成する DatagramSocket ds = new DatagramSocket(port); // 着信したデータを保持するバッファを作成する byte buffer[] = new byte[bufsize]; // 無限ループを作成する while(true) { // データグラムパケットを作成する 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();

例 (2/2) 送信側 import java.net.*; class DatagramSender { public static void main(string args[]) { try { // 宛先のインターネットアドレスを作成する InetAddress ia = InetAddress.getByName(args[0]); // 宛先ポートを取得する int port = Integer.parseInt(args[1]); // データグラムソケットを作成する DatagramSocket ds = new DatagramSocket(); // データグラムパケットを作成する byte buffer[] = args[2].getbytes(); DatagramPacket dp = new DatagramPacket(buffer, buffer.length, ia, port); // データグラムパケットを送信する ds.send(dp); catch (Exception e) { e.printstacktrace(); 実行結果受信側 : C: java>java DatagramReceiver 50000 送信側 : C: jv>java DatagramSender 127.0.0.1 50000 Dokusyu-Java 受信側 : Dokusyu-Java

URL URL(Uniform Resource Locator) は Web リソースを識別するもの protocol://host:port/file protocol はリソースを取得するときに使うプロトコルの名前 ( 例 :ftp, http) host パラメータはリソースの取得先マシンを識別 port パラメータはサーバーのソフトウェアポートを識別 ( 省略した場合は各プロトコル既定の値が使用される ) file パラメータはサーバー上のファイルを識別

URL クラス URL についての情報をカプセル化 URL コンストラクタ URL(Stringprotocol, String host, intport, String file) throws MalformedURLExcption URL(Stringprotocol, String host, String file) throws MalformedURLException URL(StingurlString) throws MalformedURLException protocol, host, port, file の意味は前スライドと同じ urlstring は上の 4 つのパラメータを 1 つにまとめたもの

メソッド openstream() メソッド InputStream OpenStream() throws IOException URL の入力ストリームをオープンし そのストリームを返す リソースの内容は次の入力ストリームから読み取ることができる getfile() メソッド gethost() メソッド getport() メソッド getprotocol() メソッド String getfile() String gethost() int getport() String getprotocol

例 ファイル名 :URLDemo.java import java.io.*; import java.net.*; class URLDemo { public static void main(string args[]) { try { // URL を取得する URL url = new URL(args[0]); // 入力ストリームを取得する InputStream is = url.openstream(); // URL からデータを読み取り 表示する byte buffer[] = new byte[1024]; int i; while((i = is.read(buffer))!= -1) { System.out.write(buffer, 0, i); catch (Exception e) { e.printstacktrace(); 実行例 1: C: java>java URLDemo file:urldemo.java 実行例 2: C: jv>java URLDemo http://www. shoeicha.com

課題 引数で指定された回数データグラムを受信し 受信した順番とは逆に 受信したデータグラムを表示するプログラムを作りなさい